From 45ef176b1338f2937e5b4e53709a7918ee09895e Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Tue, 5 Dec 2023 03:47:28 +0100 Subject: [PATCH] Update --- chess.md | 3 + gopher.md | 4 +- leading_the_pig_to_the_slaughterhouse.md | 4 +- procgen.md | 108 +++++++++++++++++++++++ rms.md | 2 + 5 files changed, 117 insertions(+), 4 deletions(-) diff --git a/chess.md b/chess.md index 468a07c..48494ed 100644 --- a/chess.md +++ b/chess.md @@ -166,6 +166,8 @@ The individual men and their movement rules are (no man can move beyond another, | queen | Q | 9 | like both bishop and rook |strongest piece | | king | K | inf | any of 8 neighboring squares | | +{ Cool players call knights *horses* or *ponies* and pawns *peasants*, rook may be called a *tower* and bishop a *sniper* as he often just sits on the main diagonal and shoot pieces that wonder through. Also pronounce *en passant* as "en peasant". Nakamura just calls all pieces a *juicer*. ~drummyfish } + **Check**: If the player's king is attacked, i.e. it is immediately possible for an enemy men to capture the king, the player is said to be in check. A player in check has to make such a move as to not be in check after that move. A player cannot make a move that would leave him in check! @@ -236,6 +238,7 @@ WORK IN PROGRESS, pls send me more tips :) - In a tournament change play based on opponent's race or sex, for example play only one opening against white people and another opening against black people, see if anyone notices the pattern :D - Outside tournament take advantage of the fact that you can do whatever the fuck you want: have one hand constantly on the clock and play with the other hand (considered rude and often forbidden), touch and knock over your opponent's pieces, take back your moves, ... and of course when you're losing, "accidentally" knock over the whole board and be like "oops, let's consider it a draw then" :D - Trash talk the referee. + - Correct the opponent's pronunciation of *en passant*, insist it's pronounced "en peasant". - ... - online only: - Be annoying and offensive in chat, if opponent blunders write `gg`, spam `ez` when you win. If he wins say it was a shit game and accuse him of [cheating](cheating.md). diff --git a/gopher.md b/gopher.md index 9408704..46dd8ca 100644 --- a/gopher.md +++ b/gopher.md @@ -1,10 +1,10 @@ # Gopher -Gopher is a network [protocol](protocol.md) for publishing, browsing and downloading files and is known as a much simpler alternative to the [World Wide Web](www.md) (i.e. to [HTTP](http.md) and [HTML](html.md)). In fact it competed with the Web in its early days and even though the Web won in the mainstream, gopher still remains used by small communities (usually the more dedicated though, see e.g. [bitreich](bitreich.md)). Gopher is like the Web but well designed, it is the [suckless](suckless.md)/[KISS](kiss.md) way of doing what the Web does, it contains practically no [bloat](bloat.md) and so [we](lrs.md) highly advocate its use. Gopher inspired creation of [Gemini](gemini.md), a similar but bit more complex and "[modern](modern.md)" protocol, and the two together have recently become the main part of so called [Smol Internet](smol_internet.md). Gopher is much better than Gemini though. The set of all public gopher servers is called gopherspace. +Gopher (allegedly from "go for information") is a network [protocol](protocol.md) for publishing, browsing and downloading files and is known as a much simpler alternative to the [World Wide Web](www.md) (i.e. to [HTTP](http.md) and [HTML](html.md)). In fact it competed with the Web in its early days and even though the Web won in the mainstream, gopher still remains used by small communities (usually the more dedicated though, see e.g. [bitreich](bitreich.md)). Gopher is like the Web but well designed, it is the [suckless](suckless.md)/[KISS](kiss.md) way of doing what the Web does, it contains practically no [bloat](bloat.md) and so [we](lrs.md) highly advocate its use. Gopher inspired creation of [Gemini](gemini.md), a similar but bit more complex and "[modern](modern.md)" protocol, and the two together have recently become the main part of so called [Smol Internet](smol_internet.md). Gopher is much better than Gemini though. The set of all public gopher servers is called gopherspace. 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 gopherspace?** 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, 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. diff --git a/leading_the_pig_to_the_slaughterhouse.md b/leading_the_pig_to_the_slaughterhouse.md index e574b4a..f0cd17b 100644 --- a/leading_the_pig_to_the_slaughterhouse.md +++ b/leading_the_pig_to_the_slaughterhouse.md @@ -1,10 +1,10 @@ # Leading The Pig To The Slaughterhouse -*"Move forward, don't look back, forward is good!"* --slaughterer to the pig, also capitalist to customer +*"Move forward, don't look back, forward is good!"* --slaughterer to the pig, also [capitalist](capitalism.md) to customer TODO -The goal is to get someone where he is defenseless so that you can keep fully abusing him as much as you like, but how to do this? When he sees the place, he won't want to move there. You do it by small steps: +The goal is to get someone to where he is defenseless so that he can start to be fully abused, but how to do this? When the victim sees the place, he won't want to move there. You do it by small steps: 1. Make the pig (customer) move a small step towards the slaughterhouse (technology dystopia), e.g. by offering it food (comfort, advanced features, more back cameras, discount price, faster porn download, ...). 2. As it moves, silently close the door (deprecate old technology) behind the pig so that it has no way to return. If the pig starts looking back just laugh at it: "Haha, why are you backwards? That place there is obsolete and out of fashion now. Forward lies a better place! [Update](update_culture.md)! Only move forward, never stop! Look, others [are doing the same](everyone_does_it.md)." diff --git a/procgen.md b/procgen.md index 3e1c7b6..925ff2e 100644 --- a/procgen.md +++ b/procgen.md @@ -215,4 +215,112 @@ int main(void) } ``` +Now let's take a look at some iterative algorithm: an extremely simple dungeon generator. All it's going to do is just randomly choose a cardinal direction (up, right, down, left), draw a line of random length, and repeat the same from the line's endpoint, until predefined number of lines has been drawn. Here is the C code: + +``` +#include + +#define W 30 // world width +#define H 30 // world height + +char world[H * W]; // 2D world array + +unsigned int r = 12345; // random seed here + +unsigned int random() +{ + r = r * 321 + 29; + return r >> 4; +} + +void generateWorld() +{ + int steps = 100; // draw this many lines + int pos = 0; + int add = 1; // movement offset + int nextLineIn = 1; + + for (int i = 0; i < H * W; ++i) + world[i] = ' '; + + while (steps) + { + world[pos] = 'X'; + nextLineIn--; + + int nextPos = pos + add; + + if (nextPos < 0 || nextPos >= W * H || // going over world edge? + (add == 1 && nextPos % W == 0) || + (add == -1 && nextPos % W == W - 1)) + nextLineIn = 0; + else + pos = nextPos; + + if (nextLineIn <= 0) + { + steps--; + nextLineIn = W / 5 + random() % (W / 3); + add = (random() & 0x10) ? W : 1; + + if (rand() & 0x80) + add *= -1; + } + } +} + +int main(void) +{ + generateWorld(); + + for (int i = 0; i < H * W; ++i) // draw + { + char c = world[i]; + + putchar(c); + putchar(c); + + if ((i + 1) % W == 0) + putchar('\n'); + } + + return 0; +} +``` + +And here is one possible output of the program: + +``` +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXX XXXX XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXX XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXX XXXX XX XX XXXX XX XX X +XXXX XXXX XX XX XXXX XX XX X +XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX X +XXXX XXXX XX XX XX XXXX XX XX X +XXXX XXXX XX XX XX XXXX XX X +XXXX XXXX XX XX XX XXXX XX X +XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X +XX XX XX XX XX XXXX XX X +XX XX XX XX XX XXXX XX X +XXXXXXXXXXXXXX XX XX XXXX X +XX XX XX XX XX XXXX X +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X +XXXXXXXXXXXXXXXXXXXXXX XX X +XX XX XX XX XX X +XX XX XX XX XX X +XX XX XX XX XX X +XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X +XX XX XX XX XX X +XX XX XX XX XX X +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X +XX XX XX XX XX XX X +XX XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XX XX XX XX XX XX X + XX XX XX XXXXXXXXXXXXXXXXXXXXXXXXXXX + XX XX XX XX + XX XX XX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX +``` + TODO: some example with noise \ No newline at end of file diff --git a/rms.md b/rms.md index d0609f1..0a40ba7 100644 --- a/rms.md +++ b/rms.md @@ -21,6 +21,8 @@ Stallman's life along with free software's history is documented by a free-licen Regarding [software](software.md) Stallman has for his whole life strongly and tirelessly promoted free software and [copyleft](copyleft.md) and has himself only used free software; he has always practiced what he preached and led the best example of how to live without [proprietary](proprietary.md) software. This in itself is extremely amazing and rare, regardless of whether he ever slipped (which we aren't aware of) or to what degree we agree with his ideas; his moral strength and integrity is really what makes him special among basically all other great people of recent centuries, it's really as if he comes from a different time when people TRULY internally believed something so much they would die for it, that they wouldn't sell even a small part of that belief for any kind of personal benefit; this is something that really puts him alongside the greatest philosophers such as [Plato](plato.md) or [Socrates](socrates.md) (who followed his own principles so much that he voluntarily died for them). +Fun fact: there is a [package](package.md) called *[vrms](vrms.md)*, for virtual RMS, that checks whether you have any non-free packages installed. Ironically it seems to not even tolerate non-free documentation under [GFDL](gfdl.md) with invariant sections, which is very correct but probably not something Stallman himself would do since GFDL is basically his own invention :) + This said, we naturally also have to state we don't nearly agree with all he says. For example he isn't too concerned about [bloat](bloat.md) (judging by the GNU software and his own creation, [Emacs](emacs.md)) and he also doesn't care that much about [free culture](free_culture.md) (some of his written works prohibit modification, see [GFDL](gfdl.md)'s "invariant seciotns", and his GNU project allows proprietary non-functional data as long as they are not "software"). Sadly he has also shown signs of being a [type A fail](fail_ab.md) personality by writing about some kind of [newspeak](newspeak.md) "*gender neutral language*" and by seeming to be caught in a [fight culture](fight_culture.md). On his website he also has an [American](usa.md) flag and claims to be a patriot, i.e. leaning to nationalism and therefore [fascism](fascism.md). Nevertheless he definitely can't be accused of populism or hypocrisy as he basically tells what he considers to be the truth no matter what, and he is very consistent in this. Some of his unpopular opinions (mostly those opposing [pedophile](pedophilia.md) witch hunt, with which we DO agree) brought him a lot of trouble and an endless wrath of [SJW](sjw.md)s. For this **he was [cancelled](cancel_culture.md)** and in 2019 was forced to resigned from the position of president of the FSF but continues to support it. He is a weird guy, having been recorded on video eating dirt from his feet before giving a lecture. In the book *Free as in Freedom* he admits he might be slightly [autistic](autism.md). Nevertheless he's pretty smart, has magna [cum](cum.md) laude degree in [physics](physics.md) from Harvard, 10+ honorary doctorates, fluently speaks English, Spanish and French and a little bit of Indonesian and has many times proven his superior programming skills (even though he later stopped programming to fully work on promoting the FSF).