From 97743d1355da5bcac599bdb3dc3088720fae3683 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Sun, 28 May 2023 12:54:45 +0200 Subject: [PATCH] Update --- anarch.md | 14 ++++++++------ fun.md | 4 +++- io.md | 15 +++++++++++++++ lrs.md | 2 +- productivity_cult.md | 8 +++++--- woman.md | 9 +++++++-- xonotic.md | 3 ++- 7 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 io.md diff --git a/anarch.md b/anarch.md index 6962461..05e99ca 100644 --- a/anarch.md +++ b/anarch.md @@ -1,9 +1,11 @@ # Anarch -Anarch is a [LRS](lrs.ms)/[suckless](suckless.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. +Anarch is a [LRS](lrs.ms)/[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, pacifism etc. -Tge repo is available at https://codeberg.org/drummyfish/Anarch +The repo is available at https://codeberg.org/drummyfish/Anarch or https://gitlab.com/drummyfish/anarch. Some info about the game can also be found at the [libregamewiki](lgw.md): https://libregamewiki.org/Anarch. + +{ Though retrospectively I can of course see many mistakes and errors about the game, I am overall quite happy about how it turned out, it got some attention among the niche of suckless lovers and many people have written me they liked the game and its philosophy. Many people have ported it to their favorite platforms, some have even written me their own expansion of the game lore, tricks they found etc. If you're among them, thank you :) ~drummyfish } ``` h@\hMh::@@hhh\h@rrrr//rrrrrrrrrrrrrrrrrrrr@@@@hMM@@@M@:@hhnhhMnr=\@hn@n@h@-::\:h @@ -48,14 +50,14 @@ nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn Anarch has these features: - It is completely **[public domain](public_domain.md)** [free software](free_software.md)/[free culture](free_culture.md) under [CC0](cc0.md), including all code and assets which were all made from scratch by drummyfish. -- It has extremely low hardware demands, fitting into **256 kb** (WITH assets) and requiring only about **32 kb of [RAM](ram.md)** and **50 MHz [CPU](cpu.md)**. [GPU](gpu.md)s need not apply. +- It has extremely low hardware demands, fitting into **256 kb** (WITH assets, with mods and compression even 60 kb) and requiring only about **32 kb of [RAM](ram.md)** and **50 MHz [CPU](cpu.md)**. [GPU](gpu.md)s need not apply. - It is written in pure [C99](c.md) without any [dependencies](dependency.md) (not even the standard library). It uses no [dynamic heap allocation](dynamic_allocation.md) and no [floating point](float.md). -- It is **extremely portable**, written against a very tiny I/O layer. As such it has been ported to many platforms such as [GNU](gnu.md)/[Linux](linux.md), [BSD](bsd.md), [Pokitto](pokitto.md), browser [JavaScript](javascript.md), [Raspberry Pi](rpi.md) and many others. +- It is **extremely [portable](portability.md)**, written against a very tiny [I/O](io.md) layer. As such it has been ported to many platforms such as [GNU](gnu.md)/[Linux](linux.md), [BSD](bsd.md), [Pokitto](pokitto.md), browser [JavaScript](javascript.md), [Raspberry Pi](rpi.md) and many others. - It is written in a [single compilation unit](scu.md) and without any [build system](build_system.md). - It is created with only free software. - It is well documented. - -Gameplay-wise Anarch offers 10 levels and multiple enemy and weapon types. It supports mouse where available. +- Mods and configs follow [suckless](suckless.md) philosophy: mods are just [diffs](diff.md), config is part of source code. +- Gameplay-wise Anarch offers 10 levels and multiple enemy and weapon types. It supports mouse where available. ## Technical Details diff --git a/fun.md b/fun.md index 85e008c..f6d8660 100644 --- a/fun.md +++ b/fun.md @@ -9,7 +9,7 @@ Fun is a rewarding lighthearted satisfying feeling you get as a result of doing - [programming](programming.md) - [games](game.md) such as [chess](chess.md) - [jokes](jokes.md) -- [open consoles](open_console.md) +- [open consoles](open_console.md) and [fantasy consoles](fantasy_console.md) - [obfuscating C](ioccc.md) - [marble racing](marble_race.md) - [Netstalking](netstalking.md) @@ -17,3 +17,5 @@ Fun is a rewarding lighthearted satisfying feeling you get as a result of doing - laughing at normies dealing with [bloat](bloat.md) - randomly stumbling upon sites on [wiby](https://www.wiby.me/) - old [Nokia](nokia.md) phones were fun +- [cowsay](cowsay.md) +- ... diff --git a/io.md b/io.md new file mode 100644 index 0000000..882cf83 --- /dev/null +++ b/io.md @@ -0,0 +1,15 @@ +# Input/Output + +In [programming](programming.md) input/output (I/O or just IO) refers to communication of a computer [program](program.md) with the outside environment, for example with the [user](user.md) in [real world](irl.md) or with the [operating system](os.md). Input is [information](information.md) the program gets from the outside, output is information the program sends to the outside. I/O is a basic and very important term as it separates any program to two distinct parts: the pure [computational system](computational_system.md) (computation happening "inside") and I/O which interconnects this system with the real world and hence makes it useful -- without I/O a program would be practically useless as it couldn't get any information about the real world and it couldn't present computed results. In [hardware](hardware.md) there exists the term "I/O device", based on the same idea -- I/O devices serve to feed input into and/or get output from a physical [computer](computer.md), for example keyboard is an input device and monitor is an output device (a computer without I/O devices would be useless just as a program without I/O operations). + +Note that I/O is not just about communication with a human user, it also means e.g. communication over [network](network.md), reading/writing from/to [files](file.md) etc. + +It is possible to have no input (e.g. a [demo](demoscene.md)), but having no output at all probably makes no sense (see also [write-only](write_only.md)). + +**I/O presents a challenge for [portability](portability.md)!** While the "pure computation" part of a program may be written in a pure platform-independent language such as [C](c.md) (and can therefore easily be compiled on different computers), the I/O part of the program usually requires some platform specific [library](library.md) or a library with many [dependencies](dependency.md); for example to display pictures on screen one may use [SDL](sdl.md), [OpenGL](opengl.md), Linux framebuffer, CSFML, [X11](x11.md), [Wayland](wayland.md) and many other libraries, each one handling I/O a bit differently. Whatever library you choose, it may be unavailable on some other platform, so the program won't run there. Some hardware platforms (e.g. many game consoles) even have their own exclusive I/O library, use of which will just tie the program to that single platform. There are programming languages and libraries that try to provide platform-independent I/O, but such approach is limited as it has to suppose some common features that will be available everywhere; for example [C](c.md) has a standard platform-independent I/O library *stdio*, but it only allows text input/output, for anything advanced such as graphics, sound and mouse one has to choose some 3rd party library. [Unix philosophy](unix_philosophy.md) also advises to only use text I/O if possible, so as to "standardize" and tame I/O a bit, but then again one has to choose what communication [protocol](protocol.md)/format to use etc. So generally I/O is a problem we have to deal with. + +How to solve this? By separating I/O code from the "pure computation" code, and by minimizing and [abstracting](abstraction.md) the I/O code so that it is easily replaceable. Inexperienced programmers often make the mistake of mixing the pure computation code with I/O code -- it is then very difficult to replace such I/O code with different I/O code on a different platform. See [portability](portability.md) for more detail. + +I/O also poses problems in some programming [paradigms](paradigm.md), e.g. in [functional programming](functional.md). + +TODO: code example \ No newline at end of file diff --git a/lrs.md b/lrs.md index f6d0139..9d0cea9 100644 --- a/lrs.md +++ b/lrs.md @@ -66,7 +66,7 @@ Apart from this software a lot of other software developed by other people and g - **[Simon Tatham's portable puzzle collection](stppc.md)**: Very portable collection of puzzle [games](game.md). - ... -Other potentially LRS software to check out may include [TinyGL](tinygl.md), [scc](scc.md), [uClibc](uclibc.md), [miniz](miniz.md), [nuklear](nuklear.md), [dmenu](dmenu.md), [sbase](sbase.md), [sic](sic.md), [tabbed](tabbed.md), [svkbd](svkbd.md), [busybox](busybox.md), [raylib](raylib.md), [PortableGL](portablegl.md) and others. +Other potentially LRS software to check out may include [TinyGL](tinygl.md), [scc](scc.md), [ed](ed.md), [lynx](lynx.md), [links](links.md), [uClibc](uclibc.md), [miniz](miniz.md), [nuklear](nuklear.md), [dmenu](dmenu.md), [sbase](sbase.md), [sic](sic.md), [tabbed](tabbed.md), [svkbd](svkbd.md), [busybox](busybox.md), [raylib](raylib.md), [PortableGL](portablegl.md) and others. It is also possible to talk about LRS data formats, [protocols](protocol.md), standards, designs and concepts as such etc. These might include: diff --git a/productivity_cult.md b/productivity_cult.md index 4a2d21a..24497a5 100644 --- a/productivity_cult.md +++ b/productivity_cult.md @@ -2,13 +2,15 @@ *"PRODUCE PRODUCE PRODUCE PRODUCE PRODUCE"* --[capitalism](capitalism.md) -Productivity cult is one of [modern](modern.md) [capitalist](capitalism.md) religions which praises human productivity above everything, even happiness, well being, sanity etc. Kids nowadays are all about "how to be more motivated and productive", they make daily checklists, analyze tables of their weekly performance, count how much time they spend taking a shit on the toilet, give up sleep to study some useless bullshit required by the current market fluctuation. Productivity cult is all about voluntarily making oneself a robot, a slave to the system that worships capital. +Productivity cult is one of [modern](modern.md) [capitalist](capitalism.md) religions which praises human productivity above everything, even happiness, well being, sanity etc. Kids nowadays are all about "how to be more motivated and productive", they make daily checklists, analyze tables of their weekly performance, count how much time they spend taking a shit on the toilet, give up sleep to study some useless bullshit required by the current market fluctuation. Productivity cult is all about voluntarily making oneself a robot, a slave to the system that worships capital. It sometimes hides beyond other terms such as *self improvement*, *personal growth* etc. + +A human is living being, not a machine, he should live a happy relaxed life, dedicated to spending time with his close ones, raising children, enjoying the beauties of nature, exploring secrets of the universe, without stress; he should create when inspiration or a truly great necessity comes to him and when he does, he should take his time to carefully make the art great, without hasting it or forcing it. Productivity cult goes all against this, it proclaims one should be constantly spitting out "something", torturing and forcing himself, maximizing quantity on detriment of quality, undergo constant stress while suppressing rest -- that one should all the time be preoccupied with competitive [fight](fight_culture.md), deadlines, that art he creates is something that can be planned on schedule, made on deadline and assigned a calculated price tag to be an ideal consumerist product. If such stance towards life doesn't make you wanna puke, you most likely lack a soul. The name of the cult itself [says a lot about it](name_is_important.md). While a name such as *efficiency* would probably be better, as efficiency means doing less work with the same result and therefore having more free time, it is not a surprise that capitalism has chosen the word *productivity*, i.e. producing more which means working more, e.g. for the price of free time and mental health. -Productivity obsessed people are idiots, they have desktops with "[motivational](motivation.md)" wallpapers saying shit like "the word impossible doesn't exist in my dictionary" and when you tell them if it wouldn't be better to rather establish a society where people wouldn't have to work they start screeching "HAHAA THATS IMPOSSIBLE IT CANT WORK". Productivity maximalists bully people for taking a rest or doing what they enjoy -- they invent words such as "[procrastination](procrastination.md)" to create a feeling of ever present guilt induced by doing what one truly enjoys. +Productivity obsessed people are mostly idiots without the ability to think for themselves, they have desktops with "[motivational](motivation.md)" wallpapers saying shit like "the word impossible doesn't exist in my dictionary" and when you tell them if it wouldn't be better to rather establish a society where people wouldn't have to work they start screeching "HAHAA THATS IMPOSSIBLE IT CANT WORK". Productivity maximalists bully people for taking rest or doing what they otherwise enjoy in moderation -- they invent words such as "[procrastination](procrastination.md)" to create a feeling of ever present guilt induced by doing what one truly enjoys. -Productivity freaks are often the ones who despise consumers, i.e. brainless machines that consume goods, but somehow don't seem to mind being producers, a similar kind of brainless machine that just stands on the other end of this retarded system. +Productivity freaks are often the ones who despise consumers, i.e. brainless zombies that consume goods, but somehow don't seem to mind being producers, a similar kind of brainless zombies that just stands on the other end of this retarded system. One of the funniest examples of productivity cult gone too far is so called "[life couching](life_couching.md)" in which the aspiring producer robots hire bullshit cult leaders, so called "life couches", to shout at them to be more productive. At least in the past slaves were aware of being slaves and tried to free themselves. I literally want to [kill myself](suicide.md). diff --git a/woman.md b/woman.md index 45ff821..a431a80 100644 --- a/woman.md +++ b/woman.md @@ -1,6 +1,6 @@ # <3 Woman <3 -A woman (also girl, gril, gurl, femoid or succubus) is one of two genders (sexes) of humans, the other one being [man](man.md). Women are [cute](cute.md) (sometimes) but notoriously bad at [programming](programming.mg), [math](math.md) and [technology](technology.md): in the field they usually "work" on [bullshit](bullshit.md) (and mostly [harmful](harmful.md)) positions such as "diversity department", [marketing](marketing.md), "[HR](human_resources.md)", [UI](ui.md)/[user experience](ux.md), or as a [token](token.md) girl for media. If they get close to actual technology, their highest "skills" are mostly limited to casual "[coding](coding.md)" (which itself is a below-average form of [programming](programming.md)) in a baby language such as [Python](python.md), [Javascript](javascript.md) or [Rust](rust.md). Mostly they are just hired for quotas and make coffee for men who do the real work (until TV cameras appear). Don't let yourself be fooled by the propaganda, women have always been bad with tech. +A woman (also girl, gril, gurl, femoid or succubus; [tranny](tranny.md) girl being called [t-girl](tgirl.md) or [mtf](mtf.md)) is one of two genders (sexes) of humans, the other one being [man](man.md). Women are [cute](cute.md) (sometimes) but notoriously bad at [programming](programming.mg), [math](math.md) and [technology](technology.md): in the field they usually "work" on [bullshit](bullshit.md) (and mostly [harmful](harmful.md)) positions such as "diversity department", [marketing](marketing.md), "[HR](human_resources.md)", [UI](ui.md)/[user experience](ux.md), or as a [token](token.md) girl for media. If they get close to actual technology, their highest "skills" are mostly limited to casual "[coding](coding.md)" (which itself is a below-average form of [programming](programming.md)) in a baby language such as [Python](python.md), [Javascript](javascript.md) or [Rust](rust.md). Mostly they are just hired for quotas and make coffee for men who do the real work (until TV cameras appear). Don't let yourself be fooled by the propaganda, women have always been bad with tech. Historically women have been privileged over men -- while men had to [work](work.md) their asses off, go to [wars](war.md), explore and hunt for food, women often weren't even supposed to work, they could stay at home, chill while guarding the fire and playing with children -- this is becoming less and less so with [capitalism](capitalism.md) which aims to simply enslave everyone, nowadays mostly through the [feminist](feminism.md) cult that brainwashed women to desire the same slavery as men. Statistically women live about 5 years longer lives than men because they don't have to worry and stress so much. @@ -44,4 +44,9 @@ On average, male brain weights 10% more than woman's and has 16% more brain cell |chess |2882 Elo (Carlsen)|2735 Elo (Polgar)|best W win 8%, lose 48%, draw 44% | |speedcubing 3x3 |3.47s (Du) |4.44 (Sebastien) |best W ranks #16 among M | |Starcraft II |3556 (Serral) |2679 (Scarlett) |best M has ~80% win chance against W | -|holding breath |24:37 (Sobat) |18:32m (Meyer) |Ms have ~35% greater lung capacity | \ No newline at end of file +|holding breath |24:37 (Sobat) |18:32m (Meyer) |Ms have ~35% greater lung capacity | + +## See Also + +- [man](man.md) +- [t-girl](tgirl.md) \ No newline at end of file diff --git a/xonotic.md b/xonotic.md index 26e570f..fcd1765 100644 --- a/xonotic.md +++ b/xonotic.md @@ -35,7 +35,8 @@ Here are some [pro](pro.md) tips to git gud, impress your frens and generally ha - **Learn the movement**: movement is essential in Xonotic, firstly you should learn extremely basic techniques like bunnyhopping, strafe jumping and in-air controls, and secondly you should learn using weapons for movement (blaster jumps, rocket jumps, crylinkg for acceleration and climbing walls, ...). This is important not only for quick relocation, taking shortcuts, dodging enemy fire and quickly running away from enemies, it also saves you from countless deaths by falling into pits. - **Console**: console is extremely useful in Xonotic; not only can it modify almost any aspect of the game, it also allows you to create fun macros (some people even create what could be considered [cheats](cheating.md) only with the console commands). A very important command is `search x` which will search for other commands and cvars, e.g. if you want to mess with resolution, do `search resolution` etc. There is even a small **stack-based minilanguage** in the console that's invoked with the `rpn` command -- this allows for very advanced stuff. Sadly this isn't well documented, but the thread at https://forums.xonotic.org/showthread.php?tid=2987 provides some basics. - **Make cool binds**, for example you should modify the standard team messages to something more funny. One of the most basic binds is **taunt** so that you can insult players (e.g. `bind KP_SLASH "cmd voice taunt"`). -- **Make basic graphics settings**, for example increase FOV (field of view) to at least 100, disable effects such as zoom animation (so that you can zoom quickly) etc. If you want to play seriously you should also **turn off music** so that you can hear enemies better. You'll also probably want to decrease your mouse sensitivity (something like 20 cm for a 360 degree turn is about right). You can also downgrade the graphics so as to make it basically look like Quake 1, either for a cool retro look or to play the game on a [potato](potato.md). +- **Lower your mouse sensitivity**, this is really crucial to git gud, it's almost impossible to be good with low sens. Lower sensitivity increases your accuracy greatly, which is just key, it's almost like an instant [cheat](cheating.md); of course you'll need a bit bigger mouse pad. Write down what sensitivity you have as **centimeters per 360 turn** (measure this carefully with a ruler), this will help you achieve exact same sensitivity when you buy a different mouse. Something like 22 cm per 360 turn is probably good. It is good to set your sensitivity as soon as possible so you don't have to later relearn you muscle memory. +- **Make basic graphics settings**, for example increase FOV (field of view) to at least 100, disable effects such as zoom animation (so that you can zoom quickly) etc. If you want to play seriously you should also **turn off music** so that you can hear enemies better. You can also downgrade the graphics so as to make it basically look like Quake 1, either for a cool retro look or to play the game on a [potato](potato.md). - **Don't fall for the F11 [troll](troll.md)** -- when you ask how to do something and people respond with "press F11", don't do it, you'll humiliate yourself. - **Enable cheats with F11**. - **Spin to win**: you can make a cool spinning macro that makes you look like you have a seizure: e.g. `bind b "toggle vid_stick_mouse; rpn /m_pitch 1 ${vid_stick_mouse} - 0.022 * =;"`.