master
Miloslav Ciz 5 months ago
parent 45ef176b13
commit c4fb268878

@ -21,7 +21,7 @@ William "Bill" Gaytes (28.10.1955 -- TODO) is a [mass murderer and rapist](entre
He is really dumb, only speaks one language and didn't even finish university. He also has no moral values, but that goes without saying for any rich businessman. He was owned pretty hard in [chess](chess.md) by Magnus Carlsen on some shitty TV show.
When Bill was born, his father was just busy counting dollar bills, so he named him Bill. Bill was mentally [retarded](retard.md) as a child and as such had to attend a private school. He never really understood programming but with a below average intelligence he had a good shot at succeeding in [business](capitalism.md). Thanks to his family connections he got to Harvard where he met [Steve Ballmer](steve_ballmer.md).L ater he dropped out of the school due to his low intelligence.
When Bill was born, his father was just busy counting dollar bills, so he named him Bill. Bill was mentally [retarded](retard.md) as a child and as such had to attend a private school. He never really understood programming but with a below average intelligence he had a good shot at succeeding in [business](capitalism.md). Thanks to his family connections he got to Harvard where he met [Steve Ballmer](steve_ballmer.md). Later he dropped out of the school due to his low intelligence.
In 1975 he founded [Micro$oft](microsoft.md), a [malware](malware.md) company named after his dick. By a sequence of extremely lucky events combined with a few dick moves by Bill the company then became successful: when around the year 1980 [IBM](ibm.md) was creating the [IBM PC](ibm_pc.md), they came to Bill because they needed an [operating system](os.md). He lied to them that he had one and sold them a license even though at the time he didn't have any OS (lol). After that he went to a programmer named Tim Paterson and basically stole (bought for some penny) his OS named QDOS and gave it to IBM, while still keeping ownership of the OS (he only sold IBM a license to use it, not exclusive rights for it). He basically fucked everyone for money and got away with it, the [American](usa.md) way. For this he is admired by Americans.

@ -47,7 +47,8 @@ The following is a list of software usually considered a good, typical example o
- Desktop environments such as [KDE](kde.md) and [GNOME](gnome.md). The concept of a [desktop environment](de.md) itself is often considered bloat.
- [Windows](windows.md): one of the best examples of how software should NOT be done.
- [Blender](blender.md): quite useful [FOSS](foss.md) 3D editor which however integrates things like a whole video editor, game engine, several renderers, scripting language with text editor and so on.
- [CMake](cmake.md): gigantic build system that currently sits on top of a sandwich of other build systems.
- [CMake](cmake.md): gigantic build system that currently sits on top of a sky-high sandwich of other build systems.
- [D-Bus](dbus.md)
- [Docker](docker.md)
- [Electron](electron.md): [GUI](gui.md) [framework](framework.md) infamous for its huge resource consumption.
- [flatpak](flatpak.md): Absolutely horrible "application distribution/execution platform???" with pakcage management, [sandboxes](sandbox.md) and all that kind of shit.
@ -67,6 +68,8 @@ Besides the typical big programs that even normies admit are bloated there exist
Small bloat is a subject of popular [jokes](joke.md) such as "OMG he uses a unicode font -- BLOAT!!!". These are good jokes, it's nice to make fun out of one's own idealism. But watch out, this doesn't mean small bloat is only a joke concept at all, it plays an important role in designing good technology. When we identify something as *small bloat*, we don't necessarily have to completely avoid and reject that concept, we may just try to for example make it optional. In context of today's PCs using a Unicode font is not really an issue for performance, memory consumption or anything else, but we should keep in mind it may not be so on much weaker computers or for example post-[collapse](collapse.md) computers, so we should try to design systems that don't [depend](dependency.md) on Unicode.
Also remember that relatively small libraries for things that are easily done without a library, such as [fixed point](fixed_point.md) arithmetic, are also bloat.
Small/medium bloat includes for example:
- [floating point](float.md) (complex standard with design issues, requires special hardware for acceleration, [fixed point](fixed_point.md) is better)

@ -1,9 +1,9 @@
# Cheating
Cheating means circumventing or downright violating rules, usually while trying to keep this behavior secret. You can cheat on your partner, in [games](game.md), in [business](business.md) etc., however despite cheating seeming like purely immoral behavior at first, it may be relatively harmless or even completely moral, e.g. in [computer graphics](graphics.md) we sometimes "cheat" our sense of sight and fake certain visual phenomena which leads to efficient rendering [algorithms](algorithm.md). In [capitalism](capitalism.md) cheating is demonized and people are brainwashed to take part in **cheater witch hunts**.
Cheating means circumventing or downright violating rules, usually while trying to keep this behavior secret. You can cheat on your partner, in [games](game.md), in [business](business.md) etc., however despite cheating seeming like purely immoral behavior at first, it may be relatively harmless or even completely moral, e.g. in [computer graphics](graphics.md) we sometimes "cheat" our sense of sight and fake certain visual phenomena which leads to efficient rendering [algorithms](algorithm.md). In [capitalism](capitalism.md) cheating is demonized and people are brainwashed to take part in **cheater witch hunts** as part of [fear culture](fear_culture.md), arbitrary drama in [fight](fight_culture.md) for attention, trying to monopolize game platforms with [bloat monopoly](bloat_monopoly.md) "anti cheat" systems etc. These so called "anti cheat" systems introduce unimaginable [bloat](bloat.md) and [bullshit](bullshit.md) and provide excuse for things like [spying](surveillance.md) (e.g. monitoring OS processes) and [proprietary](proprietary.md) technology (so that "cheaters can't study the system to trick it").
The truth is that **cheating is only an issue in a shitty society** that's driven by [competition](competition.md). In such society there is a huge motivation for cheating (sometimes literally physical survival) as well as potentially disastrous consequences of it. Under the tyranny of capitalism we are led to worship [heroes](hero_culture.md) and high achievers and everyone gets pissed when we get fooled. Corporations go "OH NOES our multi bilion dollar entertainment industry is going to go bankrupt if consoomers get annoyed by cheaters! People are gonna lose their bullshit jobs! Someone is going to get money he doesn't deserve! Our customers may get butthurt!!!" (as if corporations themselves weren't basically just stealing money and raping people lol). So they start a huge brainwashing propaganda campaign, a cheater witch hunt. States do the same, communities do the same, everyone wants to stone cheaters to death but at the same time the society pressures all of us to compete to death with others or else we'll starve. We reward winners and torture the losers, then bash people who try to win -- and no, many times there is no other choice than to cheat, the top of any competition is littered with cheaters, most just don't get caught, so in about 99% of cases the only way to the top is to cheat and try to not get caught, just to have a shot at winning against others. It is proven time after time, legit looking people in the top leagues of sports, business, science and other areas are constantly being revealed as cheaters, usually by pure accident (i.e. the number of actual cheater is MANY times higher). Take a look e.g. at the [Trackmania](trackmania.md) cheating scandal in which after someone invented a replay analysis tool he revealed that a great number or top level players were just cheaters, including possibly the GOAT of Trackmania [Riolu](riolu.md) (who just ragequit and never showed again lol). Of course famous cases like Neil Armstrong don't even have to be mentioned. { I just randomly found out that in the world of Pokemon tournaments cheating at top level also showed to be a huge issue lol. ~drummyfish } Cheater detection systems are (and always will be) imperfect and try to minimize [false positives](false_positive.md), so only the cheaters who REPEATEDLY make MANY very OBVIOUS mistakes get caught, the smart cheaters stay and take the top places in the competitive system, just as surely as natural selection leads to the evolution of organisms that best adapt to the environment. Even if perfect cheat-detection systems existed, the problem would just shift from cheating to immoral unsportmanship, i.e. abuse of rules that's technically not cheating but effectively presents the same kind of problems. How to solve this enormously disgusting mess? We simply have to stop desperately holding to the system itself, we have to ditch it.
In a good society, such as [LRS](less_retarded_society.md), cheating is not an issue at all, there's no motivation for it (people don't have to prove their worth by their skills, there are no money, people don't worship heroes, ...) and there are no negative consequences of cheating worse than someone [ragequitting](ragequit.md) an online game -- which really isn't an issue of cheating anyway but simply a consequence of unskilled player facing a skilled one (whether the pro's skill is natural or artificial doesn't play a role, the nub will ragequit anyway). In a good society cheating can become a mild annoyance at worst, and it can really be a positive thing, it can be [fun](fun.md) -- seeing for example a skilled pro face and potentially even beat a cheater is a very interesting thing. If someone wants to win by cheating, why not let him? Valid answers to this can only be given in the context of a shit society. In a good society choosing to cheat in a game is as if someone chooses to fly to the top of a mountain by helicopter rather than climbing it -- the choice is everyone's to make.
In a good society, such as [LRS](less_retarded_society.md), cheating is not an issue at all, there's no motivation for it (people don't have to prove their worth by their skills, there are no money, people don't worship heroes, ...) and there are no negative consequences of cheating worse than someone [ragequitting](ragequit.md) an online game -- which really isn't an issue of cheating anyway but simply a consequence of unskilled player facing a skilled one (whether the pro's skill is natural or artificial doesn't play a role, the nub will ragequit anyway). In a good society cheating can become a mild annoyance at worst, and it can really be a positive thing, it can be [fun](fun.md) -- seeing for example a skilled pro face and potentially even beat a cheater is a very interesting thing. If someone wants to win by cheating, why not let him? Valid answers to this can only be given in the context of a shit society that creates cults of personality out of winners etc. In a good society choosing to cheat in a game is as if someone chooses to fly to the top of a mountain by helicopter rather than climbing it -- the choice is everyone's to make.
The fact that cheating isn't really an issue is supported by the hilariously vastly different double standards applied e.g. by chess platforms in this matter, on one hand they state in their TOS they have absolutely 0% tolerance of any kind of cheating/assistance and will lifeban players for the slightest suspicion of cheating yelling "WE HAVE TO [FIGHT](fight.md) CHEATING", on the other hand they allow streamers literally cheat on a daily basis on live stream where everyone is seeing it, of course because streamers bring them money -- ALL top chess streamers (chessbrah, Nakamura, ...), including the world champion Magnus Carlsen himself, have videos of themselves getting advice on moves from the chat or even from high level players present during the stream, Magnus Carlsen is filmed taking over his friend's low rated account and winning a game which is the same as if the friend literally just used an engine to win the game, and Magnus is also filmed getting an advice from a top grandmaster on a critical move in a tournament that won him the game and granted him a FINANCIAL PRIZE. **World chess champion is literally filmed winning money by cheating and no one cares** because it was done as part of a highly lucrative stream "in a fun/friendly mood". Chessbrah streams frequently consist of many people in the room just giving advice on moves to the one who is currently playing, of course they censor all comments that try to bring up the fact that this is 100% cheating directly violating the platform's TOS. People literally have no brains, they only freak out about cheating when they're told to by the industry, when cheating is good for business people are told to shut up because it's okay and indeed they just shut up and keep consuming.

@ -1,6 +1,6 @@
# Democracy
Democracy (also *democrazy*) stands for *rule of the people*, it is a form of [government](government.md) that somehow lets all citizens collectively make political decisions, which is usually implemented by voting but possibly also by other means. The opposite of democracy is [autocracy](autocracy.md) (for example [dictatorship](dictatorship.md)), the absolute rule of a single individual. It can also be contrasted with [oligarchy](oligarchy.md), the rule of a few (e.g. [plutocracy](plutocracy.md), the rule of the rich, which we see under [capitalism](capitalism.md)). Democracy may take different forms, e.g. direct (people directly vote on specific questions) or representative (people vote for officials who then make decisions on their behalf).
Democracy (also *democrazy*) stands for *rule of the people*, it is a form of [government](government.md) that somehow lets all citizens collectively make political decisions, which is usually implemented by voting but possibly also by other means. The opposite of democracy is [autocracy](autocracy.md) (for example [dictatorship](dictatorship.md)), the absolute rule of a single individual; possible yet greater opposite of democracy is final stage [capitalism](capitalism.md), rule of no people at all, with money enslaving everyone. It can also be contrasted with [oligarchy](oligarchy.md), the rule of a few (e.g. [plutocracy](plutocracy.md), the rule of the rich, which we see under advanced [capitalism](capitalism.md)). Democracy may take different forms, e.g. direct (people directly vote on specific questions) or representative (people vote for officials who then make decisions on their behalf).
**Democracy does NOT equal voting**, even though this simplification is too often made. Voting doesn't imply democracy and democracy doesn't require voting, an alternative to voting may be for example a [scientifically](science.md) made decision. Democracy in the wide sense doesn't even require a [state](state.md) or legislation -- true democracy simply means that rules and actions of a society are controlled by all the people and in a way that benefits all the people. Even though we are led to believe we live in democratic society, the truth is that a large scale largely working democracy has never been established and that nowadays most of so called democracy is just an illusion as society clearly works for the benefit of the few richest and most powerful people while greatly abusing everyone else, especially the poorest majority of people. **We do NOT live in true democracy**. A true democracy would be achieved by ideal models of society such as those advocated by (true) [anarchism](anarchism.md) or [LRS](less_retarded_society.md), however some anarchists may be avoiding the use the term democracy as that in many narrower contexts implies an existence of government.

@ -6,7 +6,7 @@ Football is one of the most famous [sport](sport.md) [games](game.md) in which t
We, [LRS](lrs.md), highly value football, as it's a very [KISS](kiss.md) sport that can be played by anyone anywhere without needing expensive equipment. It is the sport of the people, very popular in poor parts of the world.
Football can be implemented as a video [game](game.md) or inspire a game mode -- this has been done e.g. in [Xonotic](xonotic.md) (the Nexball mode) or [SuperTuxKart](supertuxkart.md). There is a popular mainstream [proprietary](proprietary.md) video game called Rocket League in which cars play football (INB4 zoomers start calling football "Rocket League with people").
Football can be implemented as a video [game](game.md) or inspire a game mode -- this has been done e.g. in [Xonotic](xonotic.md) (the Nexball mode) or [SuperTuxKart](supertuxkart.md). There is a popular mainstream [proprietary](proprietary.md) video game called Rocket League in which cars play football (INB4 zoomers start calling football "Rocket League with people"). There is also a greatly suckless [pen and paper](pen_and_paper.md) version of football called [paper football](paper_football.md).
## Rules

@ -10,6 +10,8 @@ FT is actually just one of many so called **[integral transforms](integral_trans
**If you know [linear algebra](linear_algebra.md), this may help you understand what (D)FT really does:** Imagine the signal we work with is a POINT (we can also say a [vector](vector.md)) in many [dimensional](dimension.md) space; if for example we have a recorded sound that has 1000 samples, it is really a 1000 dimensional vector, a point in 1000 dimensional space, expressed as an "array" of 1000 numbers (vector components). A short note: since we consider a finite number of discrete samples here, we are actually dealing with what's called DISCRETE FT here, not the "vanilla" FT, but for now let's not diverge. (D)FT does nothing more than transforming from one vector [basis](basis.md) ("system of coordinates", "frame of reference") to another basis; i.e. by default the signal is expressed in time domain (our usual vector basis), the numbers in the sound "array" are such because we are viewing them from the time "frame of reference" -- (D)FT will NOT do anything with to the signal itself (it is a vector/point in space, which will stay where it is, the recorded sound itself will not change), it will merely express this same point/vector from a different "point of view"/"frame of reference" (set of basis vectors) -- that of frequencies. That's basically how all the integral transforms work, they just have to ensure the basis they are transforming to is orthogonal (i.e. kind of legit, "usable") of course. In addition the FT equation is nothing complex, it literally just uses a **[dot product](dot_product.md)** of the whole input signal with each checked frequency wave to find out how similar the signal is to that particular frequency, as dot product simply says "how similar two vectors are" -- really, think about the equation and you will see it's really doing just that.
TODO: alternatives (like performing FIR filtering without actually doing FT etc.)
## Details
First let's make clearer the whole terminology around FT:

@ -4,7 +4,7 @@ Most generally game is a form of play which is restricted by certain rules, the
A fun take at the very concept of a game is [Nomic](nomic.md), a game in which changing the game rules is part of the game. It leads to all kinds of mindfucks.
**What does a good game look like?** It is [simple](simple.md), [LRS](lrs.md) and beautiful, with only a few rules, but has great depth and provides endless hours of [fun](fun.md) and challenge -- so called [easy to learn, hard to master](easy_to_learn_hard_to_master.md). A good game is [free](free_culture.md), owned by no one, belonging to the people, and lives its own life by relying on **self imposed goals** rather than "content consumption" in form of constant updates and centralized control by some kind of "owner" (as is the case with capitalist games) -- i.e. despite having a goal, the game doesn't try to hard force the player to do something, but rather opens up a nice environment (in which the main goal is but one of many fun things to do) for player's own creativity (once the player beats the game, he may e.g. try to beat it [as fast as possible](speedrun.md), play it with some deliberate limitation, try to play it as bad as possible, combine it with other games etc.).
**What does a good game look like?** It is [simple](simple.md), [LRS](lrs.md) and beautiful, with only a few rules, but has great depth and provides endless hours of [fun](fun.md) and challenge -- so called [easy to learn, hard to master](easy_to_learn_hard_to_master.md). A good game is [free](free_culture.md), owned by no one, belonging to the people, and lives its own life by relying on **self imposed goals** rather than "content consumption" in form of constant updates and centralized control by some kind of "owner" (as is the case with capitalist games) -- i.e. despite having a goal, the game doesn't try to hard force the player to do something, but rather opens up a nice environment (in which the main goal is but one of many fun things to do) for player's own creativity (once the player beats the game, he may e.g. try to beat it [as fast as possible](speedrun.md), play it with some deliberate limitation, try to play it as bad as possible, combine it with other games etc.). One such nice game is possibly [racetrack](racetrack.md).
### Types Of Games

@ -4,7 +4,7 @@ Gopher (allegedly from "go for information") is a network [protocol](protocol.md
Gopher **doesn't use any [encryption](encryption.md)** (though some servers allow access via [Tor](tor.md)). **This is good, encryption is [bloat](bloat.md)**. Gopher also doesn't really know or care about [Unicode](unicode.md) and similar bloat (which mostly serves trannies to insert emojis of pregnant men into readmes anyway, we don't need that), it's basically just [ASCII](ascii.md) (of course you can employ Unicode as gopher just transfers files really, it's just that Unicode is not part of gopher's specification and most people prefer to keep it ASCII). Gopher's simple design is intentional, the authors deemed simplicity a [good](good.md) feature. Gopher is so simple that you may very well write your own client and server and comfortably use them -- **you can even browse gopher just by manually using [telnet](telnet.md)** to communicate with the server.
**How big is/was gopherspace?** In 1994 there were over 1300 gopher servers (source: 1994 book *Finding it on the Internet"*), around 1995 there were already more than 6000 (source: 1995 video *Searching the Internet - Gopher | The Internet Revealed*). Most of them are now gone, though Gopher recently saw a new wave of popularity. As of 2023 the Veronica search engine reported 315 gopher servers in the world with 5+ million indexed selectors, which they estimated was 83% of the whole gopherspace (the peak server count was in 2020 at almost 400). Quarry search engine reports 369 servers and 1+ million indexed selectors. Contrition search engine reported even 495 servers and 7+ million selectors. Gopher LAWN directory (made by [bitreich](bitreich.md)) contains 281 selected quality gopher holes.
**How big is/was gopherspace?** In 1994 there were over 1300 gopher servers (source: 1994 book *Finding it on the Internet"*), around 1995 there were already more than 6000 (source: 1995 video *Searching the Internet - Gopher | The Internet Revealed*). Most of them are now gone, in 2005 there were only 145 servers reported by Veronica search engine (source: *2007 gopher archive*), though Gopher recently saw a new wave of popularity. As of 2023 the Veronica search engine reported 315 gopher servers in the world with 5+ million indexed selectors, which they estimated was 83% of the whole gopherspace (the peak server count was in 2020 at almost 400). Quarry search engine reports 369 servers and 1+ million indexed selectors. Contrition search engine reported even 495 servers and 7+ million selectors. Gopher LAWN directory (made by [bitreich](bitreich.md)) contains 281 selected quality gopher holes.
From the user's perspective **the most important distinction from the Web** is that gopher is based on **menus** instead of "webpages"; a menu is simply a column of items of different predefined types, most importantly e.g. a *text file* (which clients can directly display), *directory* (link to another menu), *text label* (just shows some text), *binary file* etc. A menu can't be formatted or visually changed, there are no colors, images, scripts or [hypertext](hypertext.md) -- a menu is not a presentation tool, it is simply a navigation node towards files users are searching for (but the mentioned ASCII art and label items allow for somewhat mimicking "websites" anyway). Gopher is also often **browsed from the [command line](cli.md)**, though graphical clients are a thing too. Addressing works with [URLs](url.md) just as the Web, the URLs just differ by the protocol part (`gopher://` instead of `http://`), e.g.: `gopher://gopher.floodgap.com:70/1/gstats`. What on Web is called a "website" on gopher we call a **gopherhole** or just *hole* (i.e. a collection of resources usually under a single [domain](domain.md)) and the whole gopher network is called a **gopherspace**. [Blogs](blog.md) are common on gopher and are called **phlogs** (collectively a *phlogosphere*). As menus can refer to one another, gopher creates something akin a **global [file system](file_system.md)**, so browsing gopher is like browsing folders and can comfortably be handled with just 4 arrow keys. Note that as menus can link to any other menu freely, the structure of the "file system" is not a [tree](tree.md) but rather a general [graph](graph.md). Another difference from the Web is gopher's great emphasis on **[plaintext](plaintext.md) and [ASCII art](ascii_art.md)** as it cannot embed images and other media in the menus (even though of course the menus can link to them). There is also a support for sending text to a server so it is possible to implement [search engines](search_engine.md), guest books, [games](game.md) etc.
@ -12,7 +12,7 @@ Gopher is just an [application layer](l7.md) [protocol](protocol.md) (officially
**Gopher [software](software.md)**: sadly "[modern](modern.md)" browsers are so modern they have millions of lines of code but can't be bothered to support such a trivial protocol like gopher, however there are Web proxies you can use to explore gopherspace (look up e.g. floodgap). Better browsers such as [lynx](lynx.md) (terminal), [sacc](sacc.md), [clic](clic.md) or [forg](forg.md) ([GUI](gui.md)) can be used for browsing gopherspace natively (it's not hard, you don't need to learn any keybinds, using arrow keys usually just works). As a server you may use e.g. Gophernicus (used by [SDF](sdf.md)) or search for another one, there are dozens. { Personally I've used gophrier for server, it was the simplest one I found. ~drummyfish } For the creation of gophermaps you simply use a plaintext editor. **Where to host gopher?** [Pubnixes](pubnix.md) such as [SDF](sdf.md), [tilde.town](tilde_town.md) and [Circumlunar community](circumlunar.md) offer gopher hosting but many people simply [self-host](self_hosting.md) servers e.g. on [Raspberry Pis](rpi.md), it's pretty simple.
**A quick [tl;dr](tldr.md)/sumup of the gopher world/community** as of 2023: thankfully there doesn't seem to be much [censorship](censorship.md) and/or woke toxicity that's seen on the web, the community is still quite small, which is probably a GOOD thing; an issue/downside at this time seems to be a "self serving" nature of gopher ("come to gopher to learn about gopher"), i.e. instead of gopher being a "platform" for sharing all kinds of information, we mostly have a gopher community talking about gopher, so outsiders really have nothing to come in for. Of course there is interesting information of other kinds, but the overall impression is just this. Apart from this gopherspace seems to be mostly divided into following gopherholes:
**A quick [tl;dr](tldr.md)/sumup of the gopher world/community** as of 2023: thankfully there doesn't seem to be much [censorship](censorship.md) and/or woke toxicity that's seen on the web, the community is still quite small, which is probably a [GOOD](good.md) thing, though something like doubling the gopherspace size would probably still be welcome; an issue/downside at this time seems to be a "self serving" nature of gopher ("come to gopher to learn about gopher"), i.e. instead of gopher being a "platform" for sharing all kinds of information, we mostly have a gopher community talking about gopher, so outsiders really have nothing to come in for. Of course there is interesting information of other kinds, but the overall impression is just this. Another issue is that current search engines like Veronica don't seem to be fulltext but rather search only document titles. Currently gopherspace seems to be mostly divided into following gopherholes:
- big center [hubs](hub.md) (floodgap, bitreich, ...): Stable holes providing info and tutorials for newcomers, links to important resources, manifestos, sometimes providing a search engine or directory of other holes.
- phlogs and personal holes: Small holes with "hello world messages" and personal rants, usually about gopher and related topics such as technology [minimalism](minimalism.md), independent living etc.

@ -93,7 +93,7 @@ This is a summary of some main guidelines on how an LRS supporter should behave
- **Do NOT [fight](fight_culture.md)**, do NOT say you fight something. Fighting and rhetoric centered around "fighting something" is part of harmful [fight culture](fight_culture.md), most people don't even realize they take part in it. It is important to unlearn this. We do not want to defeat anyone, we want to convince by means of rationality, nonviolence and love. However note that what is unacceptable to do to a living being may be completely acceptable to do to non living object (for example destroying a corporation is OK, in fact it is very desirable). We often take actions that common people would call a "fight" (for example we may organize a strike), however it is important that we don't call it a fight -- a point of view is sometimes as important as the action itself as it will determine our future direction. Remember that [naming is important](name_is_important.md). **Watch out for [A/B fails](fail_ab.md)**.
- **Do NOT worship or create [heroes](hero_culture.md), don't become one**. Watch out for [cult of personality](cult_of_personality.md). It is another common mistake to for example call [Richard Stallman](rms.md) a "hero of free software" and to even worship him as a celebrity. The concept of a hero is [harmful](harmful.md), rightist concept that is connected to war mentality, it goes against [anarchist](anarchism.md) principles, it creates social hierarchy and given some people a power to deceive. People are imperfect and make mistake -- only ideas can be perfect. Respect people but don't make anyone your moral compass, you should rather subscribe to specific ideas, i.e. rather than worshipping Stallman subscribe to and promote his idea of [free software](free_software.md).
- **Do not [identify](identity.md) with specific groups and organizations** -- this one is tricky because there is a fine line between many people together agreeing on an idea (good) and those people creating a formal hierarchical group which sooner or later inevitably becomes [fascist](fascism.md) or at the very least corrupt, eventually to the degree of betraying its original beliefs (bad). Remember principles of [anarchism](anarchism.md): loosely associate with others but do not create power structures and hierarchies. An example here may be supporting [free software](free_software.md) (good) vs supporting the (now greatly corrupt) [Free Software Foundation](fsf.md) (bad). Free software as an idea is pure and good, in merely supporting the idea we will not create any hierarchy of people, power structures or attach other unrelated ideas to ride on the free software wave (e.g. that of [political correctness](political_correctness.md) now promoted by the FSF). They say there is strength in unity, that is true, but there are different kinds of unity, and if perhaps one kind of unity (the bad one) is momentarily stronger, it is so because it's the "dark side of the force": yes, it may be stronger, but it is evil. Resist this urge. For this we also don't want to start any formal [LRS](lrs.md) group.
- **CREATE, Do NOT waste your life on bullshit, do NOT get too obsessed with tools and hopping** such as [distrohopping](distrohopping.md), [githopping](githopping.md) [audiophilia](audiophilia.md), hardware consumerism, 100% minimalist perfectionism etc. Remember, the goal of your life is to create something new and better; too many people just get stuck doing nothing but switch distros, rant about which editor is best, making sure their OS has zero bloat and zero proprietary code etc. This is completely useless, your life is completely wasted. Dedicate time to creating art that will last, e.g. programming [LRS](lrs.md) (creating source code text) or making free cultural art -- it doesn't matter whether you create it with Ubuntu or Gentoo.
- **CREATE, Do NOT waste your life on bullshit, do NOT get too obsessed with tools and hopping** such as [distrohopping](distrohopping.md), [githopping](githopping.md) [audiophilia](audiophilia.md), hardware consumerism, 100% minimalist perfectionism etc. The perfect is the enemy of the good. Remember, the goal of your life is to create something new and better; too many people just get stuck doing nothing but switch distros, rant about which editor is best, making sure their OS has zero bloat and zero proprietary code etc. If that's all you do, it's completely useless, your life is completely wasted. Dedicate time to creating art that will last, e.g. programming [LRS](lrs.md) (creating source code text) or making free cultural art -- it doesn't matter whether you create it with Ubuntu or Gentoo.
- **Lead an example**, this is the best way to spread our values, however be also extremely careful not to become a worshipped [authority](hero_culture.md). Know the difference between a humble intellectual authority and an authoritative self-centered celebrity who uses his fame for deception. The more famous you are, the more humble you should become.
- **Be [loving](love.md), even towards opposition** -- remember: hate and revenge towards people perpetuates the endless circle. [Love](love.md) leads to more love, understanding, good deeds, friendship, happiness, collaboration and all the other positive things. Do not confuse love with [political correctness](political_correctness.md). You may get angry or frustrated, just don't get violent against, rather try to break something, write your anger out, play some video game etc.
- **Try to do [selfless](selflessness.md) things** -- TRULY selfless ones. Help those in need without expecting any kind of repay, do not even seek attention or gratitude for it, only your good feeling. Create selfless art, whatever it is you enjoy doing -- computer programs, 3D models, music, videos, ... put them in the [public domain](public_domain.md) and let others enjoy them :) Try to **make doing good things a habit** -- some people smoke, drink, overeat and do other kinds of things harmful to themselves and their environment as means for relieving stress. If you exploit this natural human tendency and rather develop GOOD habits, such as writing free software or helping charities as a means of relaxing and relieving stress, you have won at life; doing good and feeling good will be natural and effortless. **The thing you dedicate your life to should be the thing you love, not the thing that earns you money** or benefits you in similar ways -- try to maximize doing what you love (which may and probably should be more than one thing) and also **try to love doing what is good** so that you can do it a lot. **If you love something, never do it for money**; then it becomes business and as we know, business spoils everything.

@ -12,7 +12,8 @@ Please do NOT post lame "big-bang-theory"/[9gag](9gag.md) jokes like *sudo make
- What sound does an angry [C](c.md) programmer make? ARGCCCC ARGVVVVVVVV
- I have a mentally ill friend who tried to design the worst [operating system](os.md) on purpose. It boots for at least 10 minutes, then it changes the user's desktop background to random ads and it randomly crashes to make the user angry. He recently told me he is getting sued by [Microsoft](microsoft.md) for violating their look and feel.
- I am using a super minimal system, it only has one package installed on it. It is called [systemd](systemd.md).
- How do you know a project is truly [suckless](suckless.md)? If the readme is bigger than the program.
- How do you know a project is truly [suckless](suckless.md)? The readme is bigger than the program.
- How do you know a project is truly [bloated](bloat.md)? Instructions on how to build it are longer than whole specification of a [suckless programming language](comun.md).
- Do you use [Emacs](emacs.md)? No, I already have an [operating system](os.md).
- `alias bitch=sudo`
- a joke for minimalists:

@ -26,8 +26,9 @@ On this wiki we kind of use LMAO as a synonym to [LULZ](lulz.md) as used on Ency
## See Also
- [lol](lol.md)
- [rofl](rofl.md)
- [lol](lol.md)
- [roflmao](roflmao.md)
- [jokes](jokes.md)
- [fun](fun.md)
- [lulz](lulz.md)

@ -45,6 +45,7 @@ This is a list of just some of many minigames and minigame types.
- **[pinball](pinball.md)**
- **[poker](poker.md)**
- **[pong](pong.md)**
- **[racetrack](racetrack.md)**
- **[rock-paper-scissors](rock_paper_scissors.md)**
- **[shoot'em up](shmup.md)**
- **[snake](snake.md)**

@ -47,18 +47,16 @@ Below are some of the most notable OSes.
What would an operating system designed by [LRS](lrs.md) principles look like? There may be many different ways to approach this challenge. Multiple operating systems (or multiple versions of the same system) may be made, such as as an "extremely KISS bare minimum featureless system", a "more advanced but still KISS system", a "special-purpose safe system for critical uses" etc. The following is a discussion of ideas we might employ in designing such systems.
The basic idea for a universal LRS operating system is to be something akin **[DOS](dos.md) plus a bit of [Unix philosophy](unix_philosophy.md)**. The system would probably seem primitive by "[modern](modern.md) standards", but in a [good society](less_retarded_society.md) it would be sufficient as a universal operating system (i.e. not necessarily suitable for ALL purposes). The OS would in fact be more of a **program loader** (like e.g. the one seen in [Pokitto](pokitto.md)), running with the same privileges as other programs -- its purpose would NOT be to provide a safe environment for programs to run in, but rather to allow switching between different programs on a computer without having to reupload the programs externally, and to provide basic tools for managing the computer itself (such as browsing files, testing hardware etc.).
The basic idea for a universal LRS operating system is to be something more akin a mere **text [shell](shell.md)** (possibly [comun](comun.md) shell), we wouldn't probably even call it an operating system. A rough vision is something like **"[DOS](dos.md) plus a bit of [Unix philosophy](unix_philosophy.md)"**. The system would probably seem primitive by "[modern](modern.md) standards", but in a [good society](less_retarded_society.md) it would be sufficient as a universal operating system (i.e. not necessarily suitable for ALL purposes). The OS would in fact be more of a **program loader** (like e.g. the one seen in [Pokitto](pokitto.md)), running with the same privileges as other programs -- its purpose would NOT be to provide a safe environment for programs to run in, to protects user's data and possibly not even to offer a platform for programs to run on (for abstracting hardware away a non-OS [library](library.md) might be used instead), but rather to allow switching between different programs on a computer without having to reupload the programs externally, and to provide basic tools for managing the computer itself (such as browsing files, testing hardware etc.). This shell would basically allow to browse files, load them as programs, and maybe run simple scripts (e.g. in mentioned comun language), allowing things such as automatization of running several program (NOT in parallel but rather one by one) to collaborate on computing something.
Let's keep in mind that true LRS computers would be different from the current capitalist ones -- an operating system would only be optional, programs would be able to run on [bare metal](bare_metal.md) as well as under an OS, and operating systems would be as much compatible as possible. By this an OS might be seen as more of an extra tool rather than a platform.
The system might likely lack features one would nowadays call essential for an OS, such as multiple user support (no need if everyone has his own computer and [security](security.md) is not an issue), [virtual memory](virtual_memory.md), complex [GUI](gui.md) etc. There might even be no [multitasking](multitasking.md); a possibility to make a multitasking OS exists, but let's keep in mind that even such things as programs interacting via [pipes](pipe.md) may be somewhat implemented without it (using temporary buffer files into which one program's output is stored before running the next program).
The system might likely lack features one would nowadays call essential for an OS, such as multiple user support (no need if [security](security.md) is not an issue, everyone can simply make his own subdirectory for personal files), [virtual memory](virtual_memory.md), complex [GUI](gui.md) etc. There might even be no [multitasking](multitasking.md); a possibility to make a multitasking OS exists, but let's keep in mind that even such things as programs interacting via [pipes](pipe.md) may be implemented without it (using temporary buffer files into which one program's output is stored before running the next program).
The universal OS would assume well behaved programs, as programs would likely be given full control over the computer when run -- this would greatly simplify the system and also computing in general. Doing so would be possible thanks to non-existence of malicious programs (as in good society there would be no need for them) and elimination of [update culture](update_culture.md). Users would only install a few programs they choose carefully -- programs that have been greatly tested and don't need to be updated.
**On user interface**: the basic interaction mode would of course be the text interface. Programs would have the option to switch to a graphical mode in which they would be able to draw to screen. There would be no such [bloat](bloat.md) as [window managers](window_manager.md) or [desktop environments](desktop_environment.md) -- these are capitalist inventions that aren't really needed as users practically always interacts with just one program at a time. Even in a multitasking system only one program would be drawing to the screen at a time, with user having the option to "alt-tab" between them. This would also simplify programs greatly as they wouldn't have to handle bullshit such as dynamically resizing and rearranging their window content. If someone REALLY wanted to have two programs at the screen at the same time, something akin a "screen splitter" might be made to create two virtual screens on one physical screen.
**A bit more technical details**: the universal OS could simply be a program that gets executed after computer restart. This program would offer a [shell](shell.md) (textual, graphical, ...) that would allow inspecting the computer, configuring it, and mainly running other programs. Once the user chose to run some program, the OS would load the program to memory and jump to executing it. To get back to the OS the program could hand back control to the OS, or the computer could simply be restarted. If the program crashes, the computer simply restarts back to OS. The OS could also contain functions, kind of an [API](api.md), as part of its code that "userland" programs might call, e.g. for drawing to the screen, reading input etc. (just as e.g. a BIOS usually offers similar functions). Note that shell [scripting](script.md) that executes other programs could still be possible, e.g. by remembering the state of script execution in a file on disc. Same thing could be used for communicating between the OS and programs (e.g. clipboard), i.e. there would still be no need for multitasking.
TODO: more
**A bit more details**: the universal OS could simply be a program that gets executed after computer restart. This program would offer a [shell](shell.md) (textual, graphical, ...) that would allow inspecting the computer, configuring it, and mainly running other programs. Once the user chose to run some program, the OS would load the program to memory and jump to executing it. To get back to the OS the program could hand back control to the OS, or the computer could simply be restarted. If the program crashes, the computer simply restarts back to OS.
TODO: more

@ -1,10 +1,10 @@
# Procedural Generation
Procedural generation (procgen) refers to creation of data, such as [art](art.md) assets in [games](game.md) or test data for data processing software, by using [algorithms](algorithm.md) and mathematical formulas rather than creating the data manually or measuring it in the real world (e.g. by taking photographs). This can be used for example for automatic generation of [textures](texture.md), texts, [music](music.md), game levels or 3D models but also practically anything else, e.g. test [databases](database.md), animations or even computer programs. Such data are also called *synthetic*. Procedural art currently doesn't reach qualities and creativity of a skilled human artist, but it can be [good enough](good_enough.md) or even necessary (e.g. for creating extremely large worlds), it may be preferred e.g. for its extreme save of storage memory, it can help add detail to human work, be a good filler, a substitute, an addition to or a basis for manually created art. Procedural generation has many advantages such as saving space (instead of large data we only store small code of the algorithm that generates it), saving time (once we have an algorithm we can generate a lot data extremely quickly), increasing resolution practically to infinity or extending data to more dimensions (e.g. [3D textures](3d_texture.md)). Procedural generation can also be used as a helper and guidance, e.g. an artist may use a procedurally generated game level as a starting point and fine tune it manually, or vice versa, procedural algorithm may create a level by algorithmically assembling manually created building blocks.
Procedural generation (procgen, not to be confused with [procedural programming](imperative.md)) refers to creation of data, such as [art](art.md) assets in [games](game.md) or test data for data processing software, by using [algorithms](algorithm.md) and mathematical formulas rather than creating it manually or measuring it in the real world (e.g. by taking photographs). This can be used for example for automatic generation of [textures](texture.md), texts, [music](music.md), game levels or 3D models but also practically anything else, e.g. test [databases](database.md), animations or even computer programs. Such data are also called *synthetic*. Procedural art currently doesn't reach artistic qualities of a skilled human artist, but it can be [good enough](good_enough.md) or even necessary (e.g. for creating extremely large worlds), it may be preferred e.g. for its extreme save of storage memory, it can help add detail to human work, be a good filler, a substitute, an addition to or a basis for manually created art. Procedural generation has many advantages such as saving space (instead of large data we only store small code of the algorithm that generates it), saving artist's time (once we have an algorithm we can generate a lot data extremely quickly), parametrization (we can tweak parameters of the algorithm to control the result or create animation, often in real-time), increasing resolution practically to infinity or extending data to more dimensions (e.g. [3D textures](3d_texture.md)). Procedural generation can also be used as a helper and guidance, e.g. an artist may use a procedurally generated game level as a starting point and fine tune it manually, or vice versa, procedural algorithm may create a level by algorithmically assembling manually created building blocks.
As neural [AI](ai.md) approaches human level of creativity, we may see computers actually replacing many artists in near future, however it is debatable whether AI generated content should be called procedural generation as AI models are quite different from the traditional hand-made algorithms -- AI art is still seen as a separate approach than procedural generation. For this we'll only be considering the traditional approach from now on.
[Minecraft](minecraft.md) (or [Minetest](minetest.md)) is a popular example of a game in which the world is generated procedurally, which allows it to have near-infinite worlds -- size of such a world is in practice limited only by ranges of [data types](data_type.md) rather than available storage memory. [Roguelikes](roguelike.md) also heavily utilize procgen. However this is nothing new, an old game Daggerfall was known for its extremely vast procedurally generated world. Some amount of procedural generation can be seen probably in most mainstream games, e.g. clouds, vegetation or NPCs are often made procedurally.
[Minecraft](minecraft.md) (or [Minetest](minetest.md)) is a popular example of a game in which the world is generated procedurally, which allows it to have near-infinite worlds -- size of such a world is in practice limited only by ranges of [data types](data_type.md) rather than available memory. [Roguelikes](roguelike.md) also heavily utilize procgen. However this is nothing new, for example the old game called Daggerfall was known for its extremely vast procedurally generated world, and even much older games used this approach. Some amount of procedural generation can be seen probably in most mainstream games, e.g. clouds, vegetation or NPCs are often made procedurally.
For its extreme save of space procedural generation is extremely popular in [demoscene](demo.md) where programmers try to create as small programs as possible. German programmers made a full fledged 3D shooter called [.kkrieger](kkrieger.md) that fits into just 96 kB! It was thanks to heavy use of procedural generation for the whole game content. [Bytebeat](bytebeat.md) is a simple method of generating procedural "8bit" music, it is used e.g. in [Anarch](anarch.md). Procedural generation is generally popular in indie game dev thanks to offering a way of generating huge amounts of content quickly and without having to pay artists.
@ -19,7 +19,7 @@ A good example to think of is generating procedural [textures](texture.md). This
We use procedural generation mainly in two ways:
- **offline/explicit**: We pre-generate the data before we run the program, i.e. we let the algorithm create our art, save it to a file and then use it as we would use traditionally created art.
- **realtime/implicit**: We generate the data on the fly and only parts of it that we currently need. For example with a procedural texture mapped onto a 3D model, we would compute the texture pixels ([texels](texel.md)) when we're actually drawing them: this has the advantage of giving an infinite resolution of the texture because no matter how close-up we view the model, we can always compute exactly the pixels we need. This would typically be implemented inside a fragment/pixel [shader](shader.md) program. This is also used in the voxel games that generate the world only in the area the player currently occupies.
- **realtime/implicit**: We generate the data on the fly and only parts of it that we currently need (this of course requires an algorithm that is able to generate any part of the data independently of its other parts; for example for a procedural texture each pixel's color should only be determined by its coordinates). For example with a procedural texture mapped onto a 3D model, we would only compute the texture pixels ([texels](texel.md)) that we are actually drawing: this has the advantage of giving an infinite resolution of the texture because no matter how close-up we view the model, we can always compute exactly the pixels we need. This would typically be implemented inside a fragment/pixel [shader](shader.md) program. This is also used in the voxel games that generate the world only in the area the player currently occupies.
Indeed we may also do something "in between", e.g. generate procedural assets into temporary files or RAM [caches](cache.md) at run time and depending on the situation, for example when purely realtime generation of such assets would be too slow.

@ -0,0 +1,31 @@
# Racetrack
Racetrack is an awesome [minimalist](minimalism.md) [pen and paper](pen_and_paper.md) mathematical [game](game.md) in which one races a [car](car.md) through track with the goal to finish it as quickly as possible. For PC gaymers we could describe it as "an extremely suckless version of [Trackmania](trackmania.md)" for which you don't even need a computer. It is similar to other pen and paper games such as [paper football](paper_football.md). The basic idea is that of a car on a square grid that moves in steps -- in each step the player can adjust the car's current velocity a little bit (steer, accelerate, brake, ...) and so modify the velocity; the car must race to finish without crashing into walls, the tricky part is that one has to make predictions just like in real race, for example approaching a curve one must go to the right side of the road and brake a bit.
Racetrack is one of the best examples of what good games should look like, mainly because:
- It is extremely [suckless](suckless.md), it may be implemented and played with the use of a [computer](computer.md) but can also be played without it, i.e. it has practically no [dependencies](dependency.md). In theory it can only be played in one's brain, making it [brain software](brain_software.md).
- It is extremely [free](free_software.md) (as in freedom): firstly no one legally owns it and secondly its simplicity makes it free practically, anyone can play it and modify it regardless of where he lives, how much money he has, whether he has a computer -- even if one has no eyes or hands the game can still probably be played.
- It may easily be played by any number of players, even solo. If one plays alone, he simply tries to find the fastest solution for given track. If multiple players play, they compete who finds the best solution.
- It is [simple yet deep](easy_to_learn_hard_to_master.md), the rules are very simple but to find the optimal solution for given track may get very difficult, especially if the track is somewhat complex and employs e.g. a number of checkpoints that can be taken in any order. This is probably an [NP hard](np_hard.md) problem and finding a good solution may require a lot of experience, intuition, advanced programming techniques such as [machine learning](machine_learning.md) etc.
- It's not a mere game but a whole playground and "platform", for example it may be used to teach [vector](vector.md) mathematics, programming (path finding, heuristic search, [evolutionary programming](evolutionary_programming.md), ...), test machine learning algorithms etcetc.
- It can be very nicely implemented on computers, even on very simple ones such as [8bits](8bit.md), without bloat such as [floating point](float.md), and is friendly to e.g. implementing replays, artificial intelligence etc.
- The base version is extremely simple but may be extended greatly in various way, for example adding more rules or creating "rich" computer frontends; one may imagine e.g. a 3D frontend for the game with features such as bots, demo recording, different car skins, online multiplayer and leaderboards, track editor etc.
- ...
## Rules
There is no single rule set -- as no one owns the game, rules may be modified and adjusted, which is very good. However there exist core rules that basically make the game what it is -- let us describe those right now.
The game takes place on a 2D square grid (e.g. squared sheet of paper); the car can only ever occupy [integer](integer.md) coordinates, i.e. its position cannot be e.g. a fraction of a square (however if e.g. in some computer implementation the grid is dense enough, it may in theory practically give an impression of continuous space). (Some modifications may perhaps try to utilize different kinds of grids of more than two dimensions.)
The car has a [velocity](velocity.md) [vector](vector.md) which is initially [0,0] (i.e. the car is at rest). This vector can also only ever have integer components. The velocity vector is added to the car's position in each game step so that the car moves. For example car with position [3,2] and velocity [1,-1] will move to [4,1].
At each step the player can make a slight modification of the car's velocity, typically the player has to choose a vector from range [-1,-1] to [1,1] that's added to current velocity; in other words the player can modify current velocity by changing each of its two components by -1, 0 or 1. This makes for 9 possible choices at each game step, so the branching factor of the game is 9. This can be represented as racer steering, accelerating and braking. Of course modified version of the game may play around with this, e.g. an oil puddle may make player unable to modify velocity for one round etc.
Any specific track has a start (some versions of the game may just make player always start at [0,0]), finish (which may be a point, line, area etc.) and walls representing obstacles; modified versions of the game may also have other things such as checkpoints, items (nitro, time stop, ...) and other objects (jump ramps, oil puddles, teleports, ...). The player must race to the finish, usually without crashing into walls because a crash into wall means the car stops immediately (in some versions in may just mean the game ends). Implementation of walls and crashes may somewhat differ: in some versions walls are actually borders of "solid" areas to which the player must never enter, in other versions walls may be just lines the player must not touch or cross. In simple versions of the game walls are really line segments that go between given grid points (this is possible the more KISS variant as walls too are just defined with vectors and collision detection may be quite simple), more complex versions may allow non-integer coordinates for walls, curved walls etc. Walls may also be implemented just as "filled squares", i.e. just saying some grid points are solid and inaccessible. Crash usually means that a player would make such illegal move and so his current velocity is set to [0,0] as a consequence, but an advanced version may also make the player move as close to the crash point as possible to make the behavior closer to reality; however this may be very non-trivial to do while assuring the behavior can't be "abused". [Collision detection](collision_detection.md) can be implemented e.g. by checking if two lines intersect (if walls are just lines), or if a point belongs to given area (if walls are edges of areas), using [analytic geometry](analytic_geometry.md)).
The goal is basically always to finish the track in as few steps as possible.
TODO: example, pictures, ...

@ -77,6 +77,7 @@ Here is a list of almost all historically notable women:
- **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.
- **Yoko Ono**: killed the most famous music band in history.
- ...
## See Also

Loading…
Cancel
Save