From c2bdda32900278e39c5e365cb4eb42e95f2cdd94 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Mon, 12 Feb 2024 12:09:17 +0100 Subject: [PATCH] Update --- anarch.md | 2 ++ bloat.md | 2 +- bootstrap.md | 2 +- chess.md | 4 ++-- communism.md | 2 +- competition.md | 2 +- css.md | 2 +- left_right.md | 2 +- math.md | 12 +++++++----- prime.md | 2 +- privacy.md | 2 +- shader.md | 10 ++++------ tas.md | 10 ++++++---- thrembo.md | 2 +- usa.md | 2 +- woman.md | 3 ++- 16 files changed, 33 insertions(+), 28 deletions(-) diff --git a/anarch.md b/anarch.md index d5770be..7d76aea 100644 --- a/anarch.md +++ b/anarch.md @@ -1,5 +1,7 @@ # Anarch +*Poor man's [Doom](doom.md)?* + Anarch is a [LRS](lrs.md)/[suckless](suckless.md), [free as in freedom](free_software.md) first person shooter [game](game.md) similar to [Doom](doom.md), written by [drummyfish](drummyfish.md). It has been designed to follow the LRS principles very closely and set an example of how games, and software in general, should be written. It also tries to be compatible with principles of [less retarded society](less_retarded_society.md), i.e. it promotes [anarchism](anarchism.md), anti-[capitalism](capitalism.md), pacifism etc. The repo is available at https://codeberg.org/drummyfish/Anarch diff --git a/bloat.md b/bloat.md index 55c8531..bf49d06 100644 --- a/bloat.md +++ b/bloat.md @@ -6,7 +6,7 @@ Bloat is a very wide term that in the context of [software](software.md) and [te The issue of bloat may of course appear outside of the strict boundaries of computer technology, nowadays we may already observe e.g. **[science bloat](science_bloat.md)** -- science is becoming so overcomplicated (many times on purpose, e.g. by means of [bullshit](bullshit.md) science) that 99% people can NOT understand it, they have to BELIEVE "scientific authorities", which does not at all differ from the dangerous blind religious behavior. Any time a new paper comes out, chances are that not even SCIENTISTS from the same field but with a different specialization will understand it in depth and have to simply trust its results. This combined with self-interest obsessed society gives rise to [soyence](soyence.md) and large scale brainwashing and spread of "science approved" propaganda. -Some have attempted to measure bloat, e.g. the famous *web bloat score* (https://www.webbloatscore.com/) measures bloat of websites as its total size divided by the page screenshot size (e.g. [YouTube](youtube.md) at 18.5 vs suckless.org at 0.386). It has been observed that **software gets slower faster than hardware gets faster**, which is now known as [Wirth's law](wirths_law.md); this follows from [Moore's law](moores_law.md) (speed of hardware doubles every 24 months) being weaker than [Gate's](bill_gates.law) law (speed of software halves every 18 months); or in other words: the stupidity of soydevs outpaces the brilliancy of geniuses. +Some have attempted to measure bloat, e.g. the famous *web bloat score* (https://www.webbloatscore.com/) measures bloat of websites as its total size divided by the page screenshot size (e.g. [YouTube](youtube.md) at 18.5 vs suckless.org at 0.386). It has been observed that **software gets slower faster than hardware gets faster**, which is now known as [Wirth's law](wirths_law.md); this follows from [Moore's law](moores_law.md) (speed of hardware doubles every 24 months) being weaker than [Gate's](bill_gates.law) law (speed of software halves every 18 months); or in other words: the stupidity of [soydevs](soydev.md) outpaces the brilliancy of geniuses. Despite this there isn't any completely objective measure that would say "this software has exactly X % of bloat", bloat is something judged based on what we need/want, what tradeoffs we prefer etc. The answer to "how much bloat" there is depends on the answer to **"what really is bloat?"**. To answer this question most accurately we can't limit ourselves to simplifications such as [lines of code](loc.md) or number of package dependencies -- though these are very good estimates for most practical purposes, a more accurate insight is obtained by carefully asking what *burdens* and *difficulties* of ANY kind come with given technology, and also whether and how much of a necessary evil they are. Realize for example that if your software doesn't technically require package X to run or be compiled, package X may be [de facto](de_facto.md) required for your software to exist and work (e.g. a pure multiplayer game client won't have the server as a dependency, but it will be useless without a server, so de facto all bloat present in the server is now in a wider sense also the client's burden). So if you've found a program that's short and uses no libraries, you still have to check whether the language it is written in isn't bloated itself, whether the program relies on running on a complex platform that cannot be implemented without bloat, whether some highly complex piece of hardware (e.g. [GPU](gpu.md) or 8GB of [RAM](ram.md)) is required, whether it relies on some complex Internet service etc. You can probably best judge the amount of bloat most objectively by asking the following: if our current technology instantly disappeared, how hard would it be to make this piece of technology work again? This will inevitably lead you to investigating how hard it would be to implement all the dependencies etc. diff --git a/bootstrap.md b/bootstrap.md index 0ba71c1..e24cd6d 100644 --- a/bootstrap.md +++ b/bootstrap.md @@ -7,7 +7,7 @@ In general bootstrapping (from the idiom "pull yourself up by your bootstraps"), ## Bootstrapping: Making Dependency-Free Software -Bootstrapping as a general principle can aid us in creation of extremely free technology by greatly minimizing all its [dependencies](dependency.md), we are able to create a small amount of code that will self-establish our whole computing environment with only very small effort during the process. +Bootstrapping as a general principle can aid us in creation of extremely free technology by greatly minimizing all its [dependencies](dependency.md), we are able to create a small amount of code that will self-establish our whole computing environment with only very small effort during the process. The topic mostly revolves around designing [programming language](programming_language.md) [compilers](compiler.md), but in general we may be talking about bootstrapping whole computing environments, operating systems etc. **Why be concerned with bootstrapping when we already have our systems set up?** There are many reasons, one of the notable ones is that we may lose our current technology due to societal [collapse](collapse.md), which is not improbable, it keeps happening throughout history over and over, so many people fear (rightfully so) that if by whatever disaster we lose our current computers, Internet etc., we will also lose with it all modern art, data, software we so painfully developed, digitized books, inventions and so on; not talking about the horrors that will follow if we're unable to quickly reestablish our computer networks we are so dependent on. Setting up what we currently have completely from scratch would be extremely difficult, a task for centuries -- just take a while to consider all the activity and knowledge that's required around the globe to create a single computer with all its billions of lines of code worth of software that makes it work. Knowledge of old technology gets lost -- to make modern computers we first needed older, primitive computers, but now that we only have modern computers no one remembers anymore how to make the older computers -- if we lose the current ones, we won't be able to make them, we will lack the tools. Another reason for bootstrapping is independence of technology which brings e.g. [freedom](freedom.md) (your operating system being able to be set up anywhere without some corporation's proprietary driver or hardware unit is pursued by many), robustness, simplicity, ability to bring existing software to new platforms and so on, i.e. things that are practical even in current world. diff --git a/chess.md b/chess.md index 9c75870..c7ae9eb 100644 --- a/chess.md +++ b/chess.md @@ -56,7 +56,7 @@ On **perfect play**: as stated, chess is unlikely to be ever solved so it is unk { [This](https://www.youtube.com/watch?v=DpXy041BIlA) is an absolutely amazing video about weird chess algorithms :) ~drummyfish } -Chess is a big topic in computer science and programming, computers not only help people play chess, train their skills, analyze positions and perform research of games, but they also allow mathematical analysis of chess and provide a platform for things such as [artificial intelligence](ai.md). +Chess is a big topic in computer science and programming, computers not only help people play chess, train their skills, analyze positions and perform research of games, but they also allow mathematical analysis of chess as such and provide a platform for things such as [artificial intelligence](ai.md). Chess software is usually separated to **[libraries](library.md)**, **chess engines** and **[frontends](frontend.md)**. Chess engine is typically a [CLI](cli.md) program capable of playing chess but also doing other things such as evaluating arbitrary position, hinting best moves, saving and loading games etc. -- commonly the engine has some kind of custom CLI interface (flags, interactive commands it understands, ...) plus a support of some standardized text communication protocol, most notably XBoard (older one, more [KISS](kiss.md)) and UCI (newer, more [bloated](bloat.md)). There is also typically support for standardized formats such as FEN (way of encoding a chess position as a text string), PGN (way of encoding games as text strings) etc. Frontends on the other hand are usually [GUI](gui.md) programs (in this case also called *boards*) that help people interact with the underlying engine, however there may also be similar non-GUI programs of this type, e.g. those that automatically run tournaments of multiple engines. @@ -106,7 +106,7 @@ Similarly the **number of possibly reachable positions** (position for which so **Shortest possible checkmate** is by black on ply number 4 (so called *fool's mate*). As of 2022 the **longest known forced checkmate** is in 549 moves -- it has been discovered when computing the Lomonosov Tablebases. -Average game of chess lasts 40 moves. **Average [branching factor](branching_factor.md)** (number of possible moves at a time) is around 33. **Maximum number of possible moves in a position** seems to be 218 (FEN: `R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 w - - 0 1`). +Average game of chess lasts 40 (full) moves (80 plies). **Average [branching factor](branching_factor.md)** (number of possible moves at a time) is around 33. **Maximum number of possible moves in a position** seems to be 218 (FEN: `R6R/3Q4/1Q4Q1/4Q3/2Q4Q/Q4Q2/pp1Q4/kBNN1KB1 w - - 0 1`). White wins about 38% of games, black wins about 34%, the remaining 28% are draws (38.7%, 31.1%, 30.3% respectively on Computer Chess Rating Lists). diff --git a/communism.md b/communism.md index 076fadc..0712309 100644 --- a/communism.md +++ b/communism.md @@ -2,7 +2,7 @@ *"Imagine no possession"* --John Lennon -Communism (from *communis* -- common, shared) is a very wide term which most generally stands for the idea that sharing and equality should be the basic values and principles of a society; as such it is a [leftist](left_right.md) idea which falls under [socialism](socialism.md) (i.e. basically focusing on people at large). There are very many branches, theories, political ideologies and schools of thought somewhat based on communism, for example [Marxism](marxism.md), [Leninism](leninism.md), [anarcho communism](ancom.md), primitive communism, Christian communism, Buddhist communism etc. -- of course, some of these are good while others are evil and only abuse the word communism as a kind of *brand* (as also happens e.g. with [anarchism](anarchism.md)). Sadly after the disastrous failure of the violent pseudocommunist revolutions of the 20th century, most people came to equate the word communism with oppressive militant regimes, however we have to stress that **communism is NOT equal to [USSR](ussr.md), Marxism-Lenninism, Stalinism or any other form of pseudocommunism**, on the contrary, such regimes were rather hierarchical, violent and pseudocommunist, often downright [fascist](fascism.md). We ourselves embrace true communism and base our [LRS](lrs.md) and [less retarded society](less_retarded_society.md) on ideas of unconditional sharing. **Yes, large communist societies have existed and worked**, for example the [Inca](inca.md) empire worked without [money](money.md) and provided FREE food, clothes, houses, health care, education and other products of collective work to everyone, according to his needs. Many other communities also work on more or less communist principles, see e.g. Jewish kibbutz, Sikhist [langar](langar.md), [free software](free_software.md), or even just most families for that matter. The color [red](red.md) is usually associated with communism and the "hammer and sickle" (U+262D) is taken as its symbol, though that's mostly associated with the evil communist regimes and so its usage is to be greatly considered. +Communism (from *communis* -- common, shared) is a very wide term which most generally stands for the idea that sharing and equality should be the basic values and principles of a society; as such it is a [leftist](left_right.md) idea which falls under [socialism](socialism.md) (i.e. basically focusing on people at large). There are very many branches, theories, political ideologies and schools of thought somewhat based on communism, for example [Marxism](marxism.md), [Leninism](leninism.md), [anarcho communism](ancom.md), primitive communism, Christian communism, Buddhist communism etc. -- of course, some of these are good while others are evil and only abuse the word communism as a kind of *brand* (as also happens e.g. with [anarchism](anarchism.md)). Sadly after the disastrous failure of the violent pseudocommunist revolutions of the 20th century, most people came to equate the word communism with oppressive militant regimes, however we have to stress that **communism is NOT equal to [USSR](ussr.md), Marxism-Lenninism, Stalinism or any other form of pseudocommunism**, on the contrary, such regimes were rather hierarchical, violent and pseudocommunist, often downright [fascist](fascism.md). We ourselves embrace true communism and base our [LRS](lrs.md) and [less retarded society](less_retarded_society.md) on ideas of unconditional sharing. **Yes, large communist societies have existed and worked**, for example the [Inca](inca.md) empire worked without [money](money.md) and provided FREE food, clothes, houses, health care, education and other products of collective work to everyone, according to his needs. Many other communities also work on more or less communist principles, see e.g. Jewish kibbutz, Sikhist [langar](langar.md), [free software](free_software.md), or even just most families for that matter. Of course, no one says the mentioned societies and groups are or were [ideal](less_retarded_society.md), just that the principles of communism DO work, that communism should be considered a necessary attribute of an ideal society and that ideal society is not impossible due to impossibility of communism because as we see, it is indeed possible. The color [red](red.md) is usually associated with communism and the "hammer and sickle" (U+262D) is taken as its symbol, though that's mostly associated with the evil communist regimes and so its usage by LRS supporters is probably better be avoided. Common ideas usually associated with communism are (please keep in mind that this may differ depending on the specific flavor of communism): diff --git a/competition.md b/competition.md index 732cabe..3a1b895 100644 --- a/competition.md +++ b/competition.md @@ -2,7 +2,7 @@ Competition is a situation of conflict in which several entities try to overpower or otherwise win over each other. It is the opposite of [collaboration](collaboration.md). Competition is connected to pursuing [self interest](self_interest.md). -**Competition is the absolute root cause of most [evil](evil.md) in society. Society must never be based on competition**. Unfortunately our society has decided to do the exact opposite with [capitalism](capitalism.md), the glorification of competition -- this will very likely lead to the [destructing of our society](collapse.md), possibly even to the destruction of all [life](life.md). +**Competition is the absolute root cause of most [evil](evil.md) in society. Society must never be based on competition**. Unfortunately our society has decided to do the exact opposite with [capitalism](capitalism.md), the glorification of competition -- this will very likely lead to the [destruction of our society](collapse.md), possibly even to the destruction of all [life](life.md). Competition is to society what a drug is to an individual: competition makes a situation become better quickly and start achieving technological "progress" but for the price of things going downwards from then on, competition quickly degenerates and kills other values in society such as altruism and morality; society that decides to make unnaturally fast "progress" and base itself on competition is equivalent to someone deciding to take steroids to grow muscles quickly -- corporations that arise in technologically advanced society take over the world just like muscle cancer that grows from taking steroids. A little bit of competition can be helpful in small doses just as painkillers can on occasion help lower suffering of an individual, but one has to be extremely careful to not take too many of them... even smoking a joint from time to time can have a positive effect, however with [capitalism](capitalism.md) our society has become someone who has started to take heroin and only live for that drug alone, take as much of it as he can. Invention of bullshit jobs just to keep competition running, extreme growing hostility of people, [productivity cults](productivity_cult.md), overworking, wage slavery, extreme waste that's destroying our environment, all of these are signs our society is dying from overdose, living from day to day, trying to get a few bucks for the next dose of its drug. diff --git a/css.md b/css.md index 3eae7d9..5e3ff82 100644 --- a/css.md +++ b/css.md @@ -12,7 +12,7 @@ A user running bloatbrowser that implements CSS and has it turned on by default - Make the site work only without CSS :D For example: `body * { display: none; } body:before { content: "This site only works without CSS." }`. - CSS can do animation! This can be used to induce seizures. E.g.: `@keyframes lul { 0% { background-color: red; } 100% { background-color: green; } } body { animation-name: lul; animation-duration: 0.1s; animation-iteration-count: infinite; }`. - Animate `` size so that the scroll bars keep resizing. -- `a:hover { display: none; }`: Makes links disappear when their pointed at with the cursor :D Can also be used for buttons etc. +- `a:hover { display: none; }`: Makes links disappear when they're pointed at with the cursor :D Can also be used for buttons etc. - Make some huge clusterfuck of divs that get arranged in some intricate way, then make each div change its size with `:hover`, or better yet use `transform` to rotate or skew it, triggering a spectacular domino effect. You have to make it so that if one div reshapes on mouse over, another one gets under the cursor, triggering reshape of that one, which pushes another one under the cursor etc. - Alternative to the previous: make one huge ass div covering the whole screen and make it resize to 1x1 pixels on `:hover`, this will cause some vomit inducing blinking whenever mouse is moved. - Use animation to very slowly alter the site, e.g. keep making text more and more transparent, so that it can't be noticed immediately but will become apparent after having the site open for 15 minutes, or maybe just have the site normal but after 10 minutes just immediately rotate it 180 degrees, the user will be like WTF :D or maybe instead of this after 10 minutes just replace the site with some porn image -- there is a chance someone will open the site, then leave the computer for a while, leaving the innocent site open but in the meanwhile it will change to porn and suddenly he will look like the biggest pervert :D diff --git a/left_right.md b/left_right.md index f24b29e..3bb2b92 100644 --- a/left_right.md +++ b/left_right.md @@ -38,7 +38,7 @@ Pseudoleft is extra harmful by deceiving the public into thinking what it does r | official motive | "social justice" | "social justice" | "self defense" | "self defense" | "self defense" | "self. def.", ... | superiority | love | | bullying/violence? | yes | yes | yes | yes | yes | yes | yes | no | | fanaticism/hysteria? | yes | yes | yes | yes | probably | yes | yes | no | -|propaganda/branwash/censor.?| yes | yes | yes | yes | probably | yes | yes | no | +| propaganda/brainw./censor.?| yes | yes | yes | yes | probably | yes | yes | no | |cults of personality/heroes?| yes | yes | yes | yes | yes | yes | yes | no | | ends justify the means? | yes | yes | yes | yes | probably | probably | yes | no | diff --git a/math.md b/math.md index 3320562..3ed8db2 100644 --- a/math.md +++ b/math.md @@ -1,20 +1,20 @@ # Mathematics -Mathematics (also math or maths, from Greek *mathematicos*, *learned*) is the best [science](science.md) (yes, it is a formal science), which deductively deals with [numbers](number.md) and other [abstract](abstraction.md) structures with the use of pure [logic](logic.md), in as rigorous and objective way as possible. In fact it's the only true science that can actually prove things thanks to its tool of mathematical proof (other sciences may only disprove or show something to be very likely). It is immensely important in [programming](programming.md) and [computer science](compsci.md). Mathematics is possibly the intellectually most difficult field to study in depth, meant for the smartest people; the difficulty, as some mathematicians themselves say, comes especially from the extremely deep abstraction (pure mathematics often examines subjects that have no known connection to reality and only exist as a quirk of logic itself). It is said that mathematics is the only **universal [language](language.md)** in our universe -- if we ever get in contact with an intelligent alien civilization, mathematics is likely to be used for communication. +Mathematics (also math or maths, from Greek *mathematicos*, *learned*) is the best [science](science.md) (yes, it is a formal science), which deductively deals with [numbers](number.md) and other [abstract](abstraction.md) structures with the use of pure [logic](logic.md), in as rigorous and objective way as possible. In fact it's the only true science that can actually prove things thanks to its tool of mathematical [proof](proof.md) (other sciences may only disprove or show something to be very likely). It is immensely important in [programming](programming.md) and [computer science](compsci.md). Mathematics is possibly the intellectually most difficult field to study in depth, meant for the smartest people; the difficulty, as some mathematicians themselves say, comes especially from the extremely deep abstraction (pure mathematics often examines subjects that have no known connection to reality and only exist as a quirk of logic itself). It is said that mathematics is the only **universal [language](language.md)** in our universe -- if we ever get in contact with an intelligent alien civilization, mathematics is likely to be used for communication. Some see math not as a science but rather a discipline that develops formal tools for "true sciences". The reasoning is usually that a science has to use [scientific method](scientific_method.md), but that's a limited view as scientific method is not the only way of obtaining reliable knowledge. Besides that math can and does use the principles of scientific method -- mathematicians first perform "experiments" with numbers and generalize into [conjectures](conjecture.md) and later "strong beliefs", however this is not considered [good enough](good_enough.md) in math as it actually has the superior tool of [proof](proof.md) that is considered the ultimate goal of math. I.e. math relies on [deductive](deduction.md) reasoning (proof) rather than less reliable [inductive](induction.md) reasoning (scientific method) -- in this sense mathematics is more than a science. -[Soydevs](soydev.md), coding monkeys (such as webdevs) and just retards in general hate math because they can't understand it. They think they can do programming without math, which is just ridiculous. This delusion stems mostly from these people being highly incompetent and without proper education -- all they've ever seen was a shallow if-then-else [python](python.md) "[coding](coding.md)" of baby programs or point-and-click "coding" in gigantic [GUI](gui.md) frameworks such as [Unity](unity.md) where everything is already preprogrammed for them. By Dunning–Kruger they can't even see how incompetent they are and what real programming is about. In reality, this is like thinking that being able to operate a calculator makes you a capable mathematician or being able to drive a car makes you a capable car engineer. Such people will be able to get jobs and do some repetitive tasks such as web development, [Unity](unity.md) game development or system administration, but they will never create anything innovative and all they will ever make will be ugly, [bloated](bloat.md) [spaghetti](spaghetti.md) solution that will likely do more harm than good. +[Soydevs](soydev.md), coding monkeys (such as webdevs) and just retards in general hate math because they can't understand it. They think they can do programming without math, which is just ridiculous. This delusion stems mostly from these people being highly incompetent and without proper education -- all they've ever seen was a shallow if-then-else [python](python.md) "[coding](coding.md)" of baby programs or point-and-click "coding" in gigantic [GUI](gui.md) frameworks such as [Unity](unity.md) where everything is already preprogrammed for them. Of course this is not completely their fault (only partially), the [shitty system](capitalism.md) just produces robot slaves who can't really think, just do some task to blindly produce goods for the economy etcetc. By Dunning–Kruger they can't even see how incompetent they are and what real programming is about. In reality, this is like thinking that being able to operate a calculator makes you a capable mathematician or being able to drive a car makes you a capable car engineer. Such people will be able to get jobs and do some repetitive tasks such as web development, [Unity](unity.md) game development or system administration, but they will never create anything innovative and all they will ever make will be ugly, [bloated](bloat.md) [spaghetti](spaghetti.md) solution that will likely do more harm than good. -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. +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 and to innovate in big ways, 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 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). +**The power of math is limited** because the power of [logic](logic.md) itself 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). ## Overview Following are some math areas and topics which a programmer should be familiar with: -- **basics** (high-school level math): arithmetic, algebra, expressions, [functions](function.md), [equations](equation.md), geometry, [trigonometry](trigonometry.md)/goniometry, systems of linear equations, quadratic equations, [complex numbers](complex_number.md), [logarithms](lofarithm.md), [analytic geometry](analytic_geometry.md) (many problems are equivalent to relationships of shapes in N dimensional spaces), [polynomials](polynomial.md) (used in many areas, e.g. error correction codes in networking), ... +- **basics** (high-school level math): arithmetic, algebra, expressions, basic [functions](function.md), [equations](equation.md), geometry, [trigonometry](trigonometry.md)/goniometry, systems of linear equations, quadratic equations, [complex numbers](complex_number.md), [logarithms](log.md), [analytic geometry](analytic_geometry.md) (many problems are equivalent to relationships of shapes in N dimensional spaces), [polynomials](polynomial.md) (used in many areas, e.g. error correction codes in networking), ... - **advanced notation**: ability to understand the notation that's often used in papers etc. (the big sigma for sum, calculus notation etc.) - **formal [logic](logic.md)**: computers are based on [Boolean](boolean.md) logic, knowing basic formulas and theorems here is crucial (e.g. the completeness of [NAND](nand.md) or [De Morgan's laws](de_morgan.md)), formal logic is also just generally used in formal texts, one should know about predicate vs propositional logic etc. - **[proofs](proof.md)**: core of high level mathematics, one should know the basic proof techniques (direct, [contradiction](contradiction.md), [induction](induction.md), ...). @@ -31,4 +31,6 @@ Following are some math areas and topics which a programmer should be familiar w ## See Also +- [logic](logic.md) +- [science](science.md) - [thrembo](thrembo.md) \ No newline at end of file diff --git a/prime.md b/prime.md index 9d47f79..d6e1c53 100644 --- a/prime.md +++ b/prime.md @@ -86,7 +86,7 @@ There also exists a term **pseudoprime** -- it stands for a number which is not ## Algorithms -**Primality test**: testing whether a number is a prime is quite easy and not computationally difficult (unlike factoring the number). A [naive](naive.md) algorithm is called *trial division* and it tests whether any number from 2 up to the tested number divides the tested number (if so, then the number is not a prime, otherwise it is). This can be optimized by only testing numbers up to the [square root](sqrt.md) (including) of the tested number (if there is a factor greater than the square root, there is also another smaller than it which would already have been tested). A further simple optimization is to to test division by 2, 3 and then only numbers of the form 6q +- 1 (other forms are divisible by either 2 or 3, e.g 6q + 4 is always divisible by 2). Further optimizations exist and for maximum speed a [look up table](lut.md) may be used for smaller primes. A simple [C](c.md) function for primality test may look e.g. like this: +**Primality test**: testing whether a number is a prime is quite easy and not computationally difficult (unlike factoring the number). A [naive](naive.md) algorithm is called *trial division* and it tests whether any number from 2 up to the tested number divides the tested number (if so, then the number is not a prime, otherwise it is). This can be [optimized](optimization.md) by only testing numbers up to the [square root](sqrt.md) (including) of the tested number (if there is a factor greater than the square root, there is also another smaller than it which would already have been tested). A further simple optimization is to to test division by 2, 3 and then only numbers of the form 6q +- 1 (other forms are divisible by either 2 or 3, e.g 6q + 4 is always divisible by 2). Further optimizations exist and for maximum speed a [look up table](lut.md) may be used for smaller primes. A simple [C](c.md) function for primality test may look e.g. like this: ``` int isPrime(int n) diff --git a/privacy.md b/privacy.md index 6c3f363..4448db1 100644 --- a/privacy.md +++ b/privacy.md @@ -1,6 +1,6 @@ # Privacy -*We shit on your privacy.* +*We don't give a shit about your privacy.* Digital privacy is the ability of someone to hide "sensitive" [information](information.md) about himself; nowadays "privacy concerns" are a big part of [capitalist](capitalism.md) [bullshit](bullshit.md), [fear culture](fear_culture.md) and [fight culture](fight_culture.md), and fall under so called [computer security](security.md), yet greater area of bullshit business. Of course, there are other forms of privacy than digital, for example the physical privacy [in real life](irl.md), however in this article we'll be implicitly dealing with digital privacy unless mentioned otherwise, i.e. privacy with respect to computers, e.g. on the [Internet](internet.md). For starters let's stress the whole business around privacy is [bullshit](bullshit.md) that's wasting energy which could better be spent on actually useful things such as feeding the hungry or curing the ill. Do not engage in privacy hysteria. diff --git a/shader.md b/shader.md index 41ffa49..495e1c8 100644 --- a/shader.md +++ b/shader.md @@ -1,14 +1,12 @@ # Shader -Shader is a program running on the [graphics processing unit](gpu.md) (GPU), typically in many parallel instances as to utilize the GPU's highly parallel nature. As such they are simple to mid complexity programs. +Shader is a program running on the [graphics processing unit](gpu.md) (GPU), typically in many parallel instances as to utilize the GPU's highly parallel nature. As such they are simple to mid complexity programs. The word *shader* is also used more loosely to stand for any specific effect, material or look in 3D graphics (e.g. [games](games.md)), as shaders are usually the means of achieving such effects. -The word *shader* is also used more loosely to stand for any specific effect, material or look in 3D graphics (e.g. [games](games.md)), as shaders are usually the means of achieving such effects. +Shaders are normally written in a special **shading language** such as [GLSL](glsl.md) in the [OpenGL](opengl.md) [API](api.md), [HLSL](hlsl.md) ([proprietary](proprietary.md)) in [Direct3D](d3d.md) API or the Metal shading language ([proprietary](proprietary.md)) in [Metal](metal.md) API. These languages are often similar to [C](c.md) with some additions (e.g. vector and matrix data types) and simplifications (e.g. no function [recursion](recursion.md)). High level [frameworks](framework.md) like [Blender](blender.md) many times offer [visual programming](visual_programming.md) (point-n-click) of shaders with graph/node editors. -Shaders are normally written in a special **shading language** such as [GLSL](glsl.md) in the [OpenGL](opengl.md) [API](api.md), [HLSL](hlsl.md) ([proprietary](proprietary.md)) in [Direct3D](d3d.md) API or the Metal shading language ([proprietary](proprietary.md)) in [Metal](metal.md) API. These languages are often similar to [C](c.md) with some additions (e.g. vector and matrix data types) and simplifications (e.g. no function [recursion](resursion.md)). High level [frameworks](framework.md) like [Blender](blender.md) many times offer [visual programming](visual_programming.md) (point-n-click) of shaders with graph/node editors. +Initially (basically early 2000s) shaders were used only for graphics, i.e. to transform 3D vertices, draw triangles and compute pixel colors. Later on as GPUs became more general purpose ([GPGPU](gpgpu.md)), flexibility was added to shaders that allowed to solve more problems with the GPU and eventually general *compute* shaders appeared (OpenGL added them in version 3.3 in 2010). -Initially (basically early 2000s) shaders were used only for graphics, i.e. to transform 3D vertices, draw triangles and compute pixel colors. Later on as GPUs became more [general purpose](gpgpu.md), flexibility was added to shaders that allowed to solve more problems with the GPU and eventually general *compute* shaders appeared (OpenGL added them in version 3.3 in 2010). - -To put shaders in the context, the flow of data is this: a [CPU](cpu.md) uploads some data (3D models, textures, ...) to the GPU and then issues a draw command -- this makes the GPU start its **pipeline** consisting of different **stages**, e.g. the vertices of 3D models are transformed to screens space (the vertex stage), then triangles are generated and rasterized (the shading stage) and the data is output (on screen, to a buffer etc.). Some of these stages are programmable and so they have their own type of a shader. The details of the pipeline differ from API to API, but in general, depending on the type of data the shader processes (the stage), we talk about: +To put shaders in the context, the flow of data is this: a [CPU](cpu.md) uploads some data (3D models, textures, ...) to the GPU and then issues a draw command -- this makes the GPU start its **[pipeline](pipeline.md)** consisting of different **stages**, e.g. the vertices of 3D models are transformed to screens space (the vertex stage), then triangles are generated and rasterized (the shading stage) and the data is output (on screen, to a buffer etc.). Some of these stages are programmable and so they have their own type of a shader. The details of the pipeline differ from API to API, but in general, depending on the type of data the shader processes (the stage), we talk about: - **vertex shaders**: Perform per-vertex computations on 3D models, typically their transformation from their world position to the position in the camera and screen space. - **fragment/pixel shaders**: Compute the final color of each pixel (sometimes called more generally *fragments*), i.e. work per-pixel. A typical use is to perform [texturing](texture.md) and amount of reflected light (lighting model). diff --git a/tas.md b/tas.md index 2a11ae4..edf1539 100644 --- a/tas.md +++ b/tas.md @@ -1,16 +1,18 @@ # Tool Assisted Speedrun -Tool assisted speedrun (TAS, also more generally *tool assisted superplay*) is a category of [game](game.md) [speedruns](speedrun.md) in which help of any tools is allowed, even those that would otherwise be considered [cheating](cheating.md), e.g. scripts, savestates, [aimbots](aimbot.md) or time manipulation, however NOT those that alter the game itself. This makes it possible to create flawless, perfect or near-perfect runs which can serve as a theoretical upper limit for what is achievable by humans -- and of course TAS runs are pretty [fun](fun.md) to watch. The normal, non-TAS runs are called RTA (real time attack). For example the current (2022) RTA world record of Super Mario Bros is 4.58.881 while the TAS record is 4.41.27. +Tool assisted speedrun (TAS, also more generally *tool assisted superplay*) is a category of [game](game.md) [speedruns](speedrun.md) in which help of any tools is allowed, even those that would otherwise be considered [cheating](cheating.md), e.g. [scripts](scripting.md), savestates, [aimbots](aimbot.md), [AI](ai.md) or time manipulation, however NOT those that alter the game itself. In other words the game rules stay intact, we just try to boost the player's skill to superhuman levels. This makes it possible to create flawless, perfect or near-perfect runs which can serve as a theoretical upper limit for what is achievable by humans -- and of course TAS runs are extremely [fun](fun.md) to watch, you just see the player making perfectly timed and planned actions, 100% accurate head shots etc. The normal, non-TAS runs are called RTA (real time attack). For example the current (2022) RTA world record of Super Mario Bros is 4.58.881 while the TAS record is 4.41.27 (here we can see the RTA run is very optimized already, in less popular games a TAS can be orders of magnitude faster). -{ Watching a TAS is kind of like watching the [God](god.md) play the game. I personally like to watch [Trackmania](trackmania.md) TASes, some are really unbelievable. Elastomania and [Doom](doom.md) TASes are also pretty fucked up. Also note that [SAF](saf.md) games and [Anarch](anarch.md) have TAS support. ~drummyfish } +{ Watching a TAS run is kind of like watching the [God](god.md) play the game. I personally like to watch [Trackmania](trackmania.md) TASes, some are really unbelievable. Elastomania and [Doom](doom.md) TASes are also pretty fucked up. Also note that [SAF](saf.md) games and [Anarch](anarch.md) have TAS support. ~drummyfish } There is a website with videos of game TASes: https://tasvideos.org/. -TAS does NOT allow hacking the game in other ways than what's possible to achieve by simply playing the game, i.e. it is not possible to hex edit the game's code before running it or manipulate its RAM content at run time with external tools. However note that some games are buggy and allow things such as altering their RAM content or code by merely playing the game (e.g. Pokemon Yellow allows so called arbitrary code execution), which generally IS allowed. The goal of TAS is merely to find, as best as we can, the series of game inputs that will lead to completing the game as fast as possible. For this the game pretty much needs to be [deterministic](determinism.md), i.e. the same sequence of inputs must always reproduce the same run when replayed later. +TAS does NOT allow hacking the game in other ways than what's possible to achieve by simply playing the game, i.e. it is not possible to hex edit the game's code before running it or manipulate its RAM content at run time with external tools. However note that some games are buggy and allow things such as altering their RAM content or code by merely playing the game (e.g. Pokemon Yellow allows so called [arbitrary code execution](arbitrary_code_execution.md)) which generally IS allowed. The goal of TAS is merely to find, as best as we can, the series of game inputs that will lead to completing the game as fast as possible. For this the game pretty much needs to be [deterministic](determinism.md), i.e. the same sequence of inputs must always reproduce the same run when replayed later. TAS runs coexist alongside RTA (non-TAS) runs as separate categories that are beneficial to each other: RTA runners come up with speedrunning techniques that TAS programmers can perfectly execute and vice versa, TAS runners many times discover new techniques and ideas for RTA runners (for example the insane discovery of groundbreaking noseboost when TAS was introduced to Trackmania). In fact RTA and TAS runners are many times the very same people. Of course if you submit a TAS run in RTA category, you'll be seen as a cheater. -Creating a TAS is not an easy task, it requires great knowledge of the game (many times including its code) and its speedrunning, as well as a lot of patience and often collaboration with other TASers. TASes are made *offline* (not in real time), i.e. hours of work are required to program minutes or even seconds of the actual run. Many paths need to be planned and checked. Compared to RTAs, the focus switches from mechanical skills towards skillful mathematical analysis and planning. Besides this some technological prerequisites are necessary: the actual tools to assist with creation of the TAS. For many new [proprietary](proprietary.md) games it is extremely difficult to develop the necessary tools as their source code isn't available, their assembly is obscured and littered with "anti-cheating" malware. Many "[modern](modern.md)" (even [FOSS](foss.md)) games are additionally badly programmed and e.g. lacking a [deterministic](determinism.md) physics, which makes precise TASing almost impossible (as the traditional precise crafting of inputs requires deterministic behavior). The situation is better with old games that are played in [emulators](emulator.md) such as [DOS](dos.md) games ([Doom](doom.md) etc.) or games for consoles like [GameBoy](gameboy.md) -- [emulators](emulator.md) can give us a complete control over the environment, they allow to save and load the whole emulator state at any instant, we may slow the time down arbitrarily, rewind and script the inputs however we wish (an advanced technique includes e.g. [bruteforcing](brute_force.md): exhaustively checking all possible combinations of inputs over the following few frames to see which one produces the best time save). In games that don't have TAS tools people at least try to do the next best thing with segmented speedruns. +Creating a TAS is not an easy task, it requires great knowledge of the game (many times including its code) and its speedrunning, as well as a lot of patience and often collaboration with other TASers, sometimes a TASer needs to also do some [programming](programming.md) etc. TASes are made *offline* (not in real time), i.e. hours of work are required to program minutes or even seconds of the actual run. Many paths need to be planned and checked. Compared to RTAs, the focus switches from mechanical skills towards skillful mathematical analysis and planning. While RTA runs besides skill and training also require risk planning, i.e. sometimes deciding to do something in a slower but safer way to not ruin a good run, TAS can simply go for all the fastest routes, no matter how risky they are, as there is certainty they will succeed. Besides this some technological prerequisites are necessary: the actual tools to assist with creation of the TAS. For many new [proprietary](proprietary.md) games it is extremely difficult to develop the necessary tools as their source code isn't available, their assembly is obscured and littered with "anti-cheating" malware. Many "[modern](modern.md)" (even [FOSS](foss.md)) games are additionally badly programmed and e.g. lacking a [deterministic](determinism.md) physics, which makes precise TASing almost impossible (as the traditional precise crafting of inputs requires deterministic behavior). The situation is better with old games that are played in [emulators](emulator.md) such as [DOS](dos.md) games ([Doom](doom.md) etc.) or games for consoles like [GameBoy](gameboy.md) -- [emulators](emulator.md) can give us a complete control over the environment, they allow to save and load the whole emulator state at any instant, we may slow the time down arbitrarily, rewind and script the inputs however we wish (an advanced technique includes e.g. [bruteforcing](brute_force.md): exhaustively checking all possible combinations of inputs over the following few frames to see which one produces the best time save). In games that don't have TAS tools people at least try to do the next best thing with **segmented speedruns** (e.g. stitching together world record runs of each game level). + +A libre [game](game.md) (under [CC0](cc0.md)!) called [Lix](lix.md), a clone of [Limmings](lemmings.md) is kind of based on making TAS runs, and it's excellent! In the game, like in original Lemmings, one has to manage a group of units to cooperate in overcoming obstacles and so get safely to the level exit; however, unlike Lemmings, Lix incorporates a replay system so the player may not just pause the game, accelerate or slow down the time, but also rewind back and issue commands perfectly on any any given frame. The game also shows to the player all necessary info like exact frame number, exact survivable jump height etc., so winning a level doesn't depend on fast reaction time, good estimate or grinding attempts over and over until one doesn't make any mistake -- no, solving the level is purely about thinking and finding the mathematical solution. Once one knows how to get to the exit, it's easy to program in any complex sequence of actions, and of course then he can rewatch it in real time and get this kind of rewarding movie in which everything is performed perfectly. Lix is really an excellent example of how TAS is not just 3rd party hacking of the game but inherent part of the original game's design, one that takes the fun to the next level. There also exists a term *tool assisted superplay* which is the same principle as TAS but basically with the intention of just flexing, without the goal of finishing the game fast (e.g. playing a [Doom](doom.md) level against hundreds of enemies without taking a single hit). diff --git a/thrembo.md b/thrembo.md index 49b828b..6ac232a 100644 --- a/thrembo.md +++ b/thrembo.md @@ -1,6 +1,6 @@ # Thrembo -Thrembo (also hidden or forbidden number) is allegedly a "fictional" whole number lying between numbers 6 and 7, it's a subject of [jokes](joke.md) and [conspiracy theories](conspiracy.md) with most people seeing it as a [meme](meme.md) and others promoting its existence, it is represented by a [Unicode](unicode.md) symbol U+03EB. Thrembo originated as a schizo post on [4chan](4chan.md) in 2021 by someone implying there's some kind of conspiracy to hide the existence of a number between 6 and 7, who was of course in turn advised to take his meds, however the [meme](meme.md) has already been started. Thrembo now even has its own [subreddit](reddit.md) (though it's extremely retarded, don't go there). +Thrembo (also hidden or forbidden number) is allegedly a "fictional" whole number lying between numbers 6 and 7, it's a subject of [jokes](jokes.md) and [conspiracy theories](conspiracy.md) with most people seeing it as a [meme](meme.md) and others promoting its existence, it is represented by a [Unicode](unicode.md) symbol U+03EB. Thrembo originated as a schizo post on [4chan](4chan.md) in 2021 by someone implying there's some kind of conspiracy to hide the existence of a number between 6 and 7, who was of course in turn advised to take his meds, however the [meme](meme.md) has already been started. Thrembo now even has its own [subreddit](reddit.md) (though it's extremely retarded, don't go there). How can there be an integer between 6 and 7? Well, that's what thrembologists research. Sure, normally there is no space on the number line to fit a number between 6 and 7 so that its distance is 1 to both its neighbors, however this only holds due to simplifications we naively assume because of our limited IQ; one may for example imagine a curved, non Euclidean number line (:'D) on which this is possible, just like we can draw a triangle with three right angles on a surface of a sphere. In history we've naysayer proven wrong in mathematics, for example those who claimed there is no solution to the equation *x^2 = -1*; some chad just came and threw at us a new number called [i](i.md) (he sneakily made it just a letter so that he doesn't actually have to say how much it ACTUALLY equals), he just said "THIS NUMBR IS HENCEFORTH THE SOLUTION BECAUSE I SAY SO" and everyone was just forced to admit defeat because no one actually had a bigger authority than this guy. That's how real mathematics is done kids. As we see e.g. with [political correctness](political_correctness.md), with enough propaganda anything can be force-made a fact, so if the number gets enough likes on twitter, it will just BE. diff --git a/usa.md b/usa.md index b71df8c..63c386f 100644 --- a/usa.md +++ b/usa.md @@ -1,6 +1,6 @@ # USA -United States of America (also United Shitholes of America, USA, US or just "murika") is a [dystopian](dystopia.md) imperialist country of fat, stupid dumbasses enslaved by [capitalism](capitalism.md), either rightist or [pseudoleftist](pseudoleft.md) [fascists](fascism.md) endlessly obsessed with [money](money.md), [wars](war.md), [fighting](fight_culture.md), shooting their presidents and shooting up their schools. USA consists of 50 states located in North America, a continent that ancestors of Americans invaded and have stolen from Indians, the natives whom Americans mass murdered. Americans are stupid idiots with guns who above all value constant societal conflict and make the world so that all people are dragged into such conflict. +United States of America (also United Shitholes of America, burgerland, USA, US or just "murika") is a [dystopian](dystopia.md) imperialist country of fat, stupid dumbasses enslaved by [capitalism](capitalism.md), either rightist or [pseudoleftist](pseudoleft.md) [fascists](fascism.md) endlessly obsessed with [money](money.md), [wars](war.md), [fighting](fight_culture.md), shooting their presidents and shooting up their schools. USA consists of 50 states located in North America, a continent that ancestors of Americans invaded and have stolen from Indians, the natives whom Americans mass murdered. Americans are stupid idiots with guns who above all value constant societal conflict and make the world so that all people are dragged into such conflict. USA is very similar to [North Korea](north_korea.md): in both countries the people are successfully led to believe their country is the best and have strong propaganda based on [cults of personality](cult_of_personality.md), which to outsiders seem very ridiculous but which is nevertheless very effective: for example North Korea officially proclaims their supreme leader Kim Jong-il was born atop a sacred mountain and a new star came to existence on the day of his birth, while Americans on the other hand believe one of their retarded leaders named George Washington was a divine god who was PHYSICALLY UNABLE TO TELL A LIE, which was actually taught at their schools. North Korea is ruled by a single political party, US is ruled by two practically same militant capitalist imperialist parties (democrats and republicans), i.e. de-facto one party as well. Both countries are obsessed with weapons (especially nuclear ones) and their military, both are highly and openly [fascist](fascism.md) (nationalist). Both countries are full of extreme [propaganda](propaganda.md), [censorship](censorship.md) and [hero culture](hero_culture.md), people worship dictators such as Kim Jong-un or [Steve Jobs](steve_jobs.md). US is even worse than North Korea because it exports its toxic [culture](culture.md) all over the whole world and constantly invades other countries, it is destroying all other cultures and leads the whole world to doom and destruction of all life, while North Korea basically only destroys itself. diff --git a/woman.md b/woman.md index 761df6c..de33b95 100644 --- a/woman.md +++ b/woman.md @@ -76,9 +76,10 @@ Here is a list of almost all historically notable women: - **Elizabeth II**: queen of [England](uk.md), managed to stay alive for a long time. - **[Elizabeth Holmes](elizabeth_holmes.md)**: cringe and creepy psychopath who obsessively tried to imitate [Steve Jobs](steve_jobs.md), started a huge [corporation](corporation.md) and manipulated uncountable people into a huge fraud, sentenced to 11 years in jail. - **Emily Wilding Davison**: injured an innocent horse by jumping under it in a protest. +- **Eve of the Bible**: achieved probably the biggest fuck up in [history](history.md), she did the single one thing she was forbidden from doing without even gaining much benefit from it, she ate some kind of [God](god.md) forbidden fruit, enraged God and doomed all people who will ever live to be banished from paradise :D - **Helen of Troy**: caused the Troy war. - **Hermione Granger**: smart girl, also fictional (these two attributes seem to go together in girls). -- **Joan of Arc**: militant nationalist [fascist](fascism.md), basically Christian [jihadist](jihad.md). +- **Joan of Arc**: [militant](military.md) nationalist [fascist](fascism.md), basically Christian [jihadist](jihad.md). - **Judit Polgar**: best non-fictional female [chess](chess.md) player that at her peak managed the incredible feat of ranking #56 in the world while actually existing. - **[Marie Curie](marie_curie.md)**: this one was actually probably quite skilled and based, won two Nobel Prizes (at the time when there were no diversity quotas so it actually counts), though she probably stole most of her work from her husband. She was quite ugly tho. - **Olga Hepnarova**: ran over 8 people with a truck, later executed.