master
Miloslav Ciz 2 years ago
parent f0c3f6aecf
commit e54040171b

@ -1,6 +1,12 @@
# ASCII
TODO
ASCII (American standard code for information interchange) is a relatively simple standard for digital encoding of [text](text.md) that's one of the most basic and probably the most common format used for this purpose. For its simplicity and inability to represent characters of less common alphabets it is nowadays quite often replaced with more complex encodings such as [UTF-8](utf8.md) who are however almost always backwards compatible with ASCII (interpreting UTF-8 as ASCII will give somewhat workable results), and ASCII itself is also normally supported everywhere. ASCII is the [suckless](suckless.md)/[LRS](lrs.md)/[KISS](kiss.md) character encoding, recommended and [good enough](good_enough.md) for most programs.
The ASCII standard assigns a 7 [bit](bit.md) code to each basic text character which gives it a room for 128 characters -- these include lowercase and uppercase [English](english.md) alphabet, decimal digits, other symbols such as a question mark, comma or brackets, plus a few special control characters that represent instructions such as carriage return which are however often obsolete nowadays. Due to most computers working with 8 bit bytes, most platforms store ASCII text with 1 byte per character; the extra bit creates a room for **extending** ASCII by another 128 characters (or creating a variable width encoding such as [UTF-8](utf8.md)). These extensions include unofficial ones such as VISCII (ASCII with additional Vietnamese characters) and more official ones, most notably [ISO 8859](iso_8859.md): a group of standards by [ISO](iso.md) for various languages, e.g. ISO 88592-1 for western European languages, ISO 8859-5 for Cyrillic languages etc.
The ordering of characters has been kind of cleverly designed to make working with the encoding easier, for example digits start with 011 and the rest of the bits correspond to the digit itself (0000 is 0, 0001 is 1 etc.).
ASCII was approved as an [ANSI](ansi.md) standard in 1963 and since then underwent many revisions every few years. The current one is summed up by the following table:
| dec | hex | oct | bin | symbol |
|-----|-----|-----|-------|-----------------------|
@ -131,4 +137,9 @@ TODO
| 124 | 7c | 174 |1111100| `|` |
| 125 | 7d | 175 |1111101| `}` |
| 126 | 7e | 176 |1111110| `~` |
| 127 | 7f | 177 |1111111| DEL |
| 127 | 7f | 177 |1111111| DEL |
## See Also
- [Unicode](unicode.md)
- [ASCII art](ascii_art.md)

@ -1,5 +1,9 @@
# ASCII Art
ASCII art is the [art](art.md) of manually creating graphics and images only out of [fixed-width](fixed_width.md) [ASCII](ascii.md) characters. This means no [unicode](unicode.md) or extended ASCII characters are allowed, of course. ASCII art is also, strictly speaking, separate from mere [ASCII rendering](ascii_rendering.md), i.e. automatically rendering a bitmap image with ASCII characters in place of [pixels](pixel.md). Pure ASCII art should also make no use of color.
This kind of art used to be a great part of the culture of earliest [Internet](internet.md) communities for a number of reasons imposed largely by the limitations of old computers -- it could be created easily with a text editor and saved in pure text format, it didn't take much space to store or send over a network and it could be displayed on text-only displays and terminals. The principle itself predates computers, people were already making this kind of images with type writers. Nevertheless the art survives even until today and lives on in the hacker culture, in [Unix](unix.md) communities etc. ASCII diagram may very well be embedded e.g. in a comment in a source code to explain some spatial concept -- that's pretty [KISS](kiss.md). We, [LRS](lrs.md), highly advocate use of ASCII art whenever it's [good enough](good_enough.md).
```
_,,_
/ ';_
@ -38,4 +42,6 @@ V
- [ANSI art](ansi_art.md)
- [pixel art](pixel_art.md)
- [plain text](plain_text.md)
- [plain text](plain_text.md)
- [cowsay](cowsay.md)
- [figlet](figlet.md)

@ -0,0 +1,19 @@
# BBS
{ I am too young to remember this shit so I'm just writing what I've read on the web. ~drummyfish }
Bulletin board system (BBS) is, or rather used to be, a kind of [server](server.md) that hosts a community of users who connect to it via [terminal](terminal.md), who exchange messages, files, play [games](game.md) and otherwise interact -- BBSes were mainly popular before the invention of [web](www.md), i.e. from about 1978 to mid 1990s, however some still exist today. BBSes are powered by special BBS [software](software.md) and the people who run them are called sysops.
Back then people connected to BBSes via dial-up [modems](modem.md) and connecting was much more complicated than connecting to a server today: you had to literally dial the number of the BBS and you could only connect if the BBS had a free line. I.e. a BBS would have a certain number of modems that defined how many people could connect at once. It was also expensive to make calls into other countries so BBSes were more of a local thing, people would connect to their local BBSes. Furthermore these things ran often on non-[multitasking](multitasking.md) systems like [DOS](dos.md) so allowing multiple users meant the need for having multiple computers. The boomers who used BBSes talk about great adventure and a sense of intimacy, connecting to a BBS meant the sysop would see you connecting, he might start chatting with you etc. Nowadays the few existing BBSes use protocols such as [telnet](telnet.md), nevertheless there are apparently about 20 known dial-up ones in north America. Some BBSes evolved into more modern communities based e.g. on [public access Unix](pubnix.md) systems -- for example [SDF](sdf.md).
A BBS was usually focused on a certain topic such as technology, fantasy [roleplay](rolaplay.md), dating, [warez](warez.md) etc., they would typically greet the users with a custom themed [ANSI art](ansi_art.md) welcome page upon login -- it was pretty cool.
The first BBS was CBBS (computerized bulletin board system) created by Ward Christensen and Randy Suess in 1978 during a blizzard storm -- it was pretty primitive, e.g. it only allowed one user to be connected at the time. After publication of their invention, BBSes became quite popular and the number of them grew to many thousands -- later there was even a magazine solely focused on BBSes (*BBS Magazine*). BBSes would later group into larger networks that allowed e.g. interchange of mail. The biggest such network was [FidoNet](fidonet.md) which at its peak hosted about 35000 nodes.
{ Found some list of BBSes at http://www.synchro.net/sbbslist.html. ~drummyfish }
## See Also
- [public access Unix](pubnix.md)
- [Usenet](usenet.md)
- [tildeverse](tildeverse.md)

@ -2,6 +2,8 @@
Chess is an old board [game](game.md), perhaps most famous and popular among all board games in history. It is a complete information game that simulates a battle of two armies on a 64x64 board with different battle pieces. Chess has a world-wide competitive community and is considered an intellectual sport but is also a topic of active research (chess is unlikely to be ever solved due to its non-trivial rules combined with enormous state space, Shannon estimated the number of possible games at 10^120) and programming (many chess engines, [AI](ai.md)s and frontends are being actively developed).
{ There is a nice black and white indie movie called *Computer Chess* about chess programmers of the 1980s, it's pretty good, very oldschool, starring real programmers and chess players, check it out. ~drummyfish }
[Drummyfish](drummyfish.md) has created a suckless/[LRS](lrs.md) chess library [smallchesslib](smallchesslib.md) which includes a simple engine called *smolchess*.
**At [LRS](lrs.md) we consider chess to be one of the best games**, if not the very best one, for the following reasons:

@ -0,0 +1,17 @@
# Determinism
*"God doesn't play dice."* --[some German dude](einstein.md)
Deterministic system is one which over time evolves without any involvement of [randomness](randomness.md) and probability; i.e. its current state along with the rules according to which it behaves unambiguously and precisely determine its following state. This means that a deterministic [algorithm](algorithm.md) will always give the same result if run multiple times with the same input values. Determinism is an extremely important concept in [computer science](compsci.md) and [programming](programming.md) (and in many other fields of science and philosophy).
[Computers](computer.md) are mostly deterministic by nature and design, they operate by strict rules and engineers normally try to eliminate any random behavior as that is mostly undesirable (with certain exceptions mentioned below) -- randomness leads to hard to detect and hard to fix [bugs](bug.md), unpredictability etc. Determinism has furthermore many advantages, for example if we want to record a behavior of a deterministic system, it is enough if we record only the inputs to the system without the need to record its state which saves a great amount of space -- if we later want to replay the system's behavior we simply rerun the system with the recorded inputs and its behavior will be the same as before (this is exploited e.g. in recording gameplay demos in video [games](game.md) such as [Doom](doom.md)).
Determinism can however also pose a problem, notable e.g. in cryptography where we DO want true randomness e.g. when generating [seeds](seed.md). Determinism in this case implies an attacker knowing the conditions under which we generated the seed can exactly replicate the process and arrive at the seed value that's supposed to be random and secret. For this reason some [CPUs](cpu.md) come with special hardware for generating truly random numbers.
Despite the natural determinism of computers as such, **computer programs aren't automatically deterministic** -- if you're writing a computer program, you have to make some effort to make it deterministic. This is because there are things such as [undefined behavior](undefined_behavior.md). For example the behavior of your program may depend on timing ([critical sections](critical_section.md), ...), performance of the computer (a game running on slower computer will render fewer [frames per second](fps.md), ...), [byte sex](endianness.md) (big vs little endian), accessing uninitialized memory (which many times contains undefined values) and many more things. All this means that your program run with the same input data will produce different results on different computers or under slightly different circumstances, i.e. it would be non-deterministic.
Even if we're creating a program that somehow works with probability, we usually want to make it deterministic. This means we don't use actual random numbers but rather [pseudorandom](pseudorandomness.md) number generators that output [chaotic](chaos.md) values which simulate randomness, but which will nevertheless be exactly the same when ran multiple times with the same initial seed. This is again important e.g. for [debugging](debugging.md) the system in which replicating the bug is key to fixing it.
In theoretical computer science non-determinism means that a model of computation, such as a [Turing machine](turing_machine.md), may at certain points decide to make one of several possible actions which is somehow most convenient, e.g. which will lead to finding a solution in shortest time. Or in other words it means that the model makes many computations, each in different path, and at the end we conveniently pick the "best" one, e.g. the fastest one. Then we may talk e.g. about how the computational strength or speed of computation differ between a deterministic and non-deterministic Turing machine etc.
Determinism is also a philosophical theory that says our Universe is deterministic, i.e. that everything is already predetermined by the state of the universe and the laws of physics, i.e. that we don't have "free will" (whatever it means) etc. Many believe [quantum physics](quantum.md) disproves determinism which is however not the case, there may e.g. exist hidden variables that still make quantum physics deterministic. Anyway, this is already beyond the scope of technological determinism.

@ -0,0 +1,3 @@
# Faggot
Faggot is a synonym to [gay](gay.md).

@ -0,0 +1,3 @@
# Firmware
Firmware is a type of very basic [software](software.md) that's usually preinstalled on a device from factory and serves to provide the most essential functionality of the device. On simple devices, like mp3 players or remote controls, firmware may be all that's ever needed for the devices functioning, while on more complex ones, such as [personal computers](pc.md), firmware (e.g. [BIOS](bios.md) or [UEFI](uefi.md)) allows basic configuration, allows installation of more complex software (such as an [operating system](os.md)) and possibly provides functions that the installed software can use. Firmware is typically not meant to be rewritten by the user and is installed in some kind of memory that's not very easy to rewrite, it may even be hard-wired in which case it becomes something on the very boundary of software and [hardware](hardware.md).

@ -0,0 +1,5 @@
# Free Speech
Freedom of speech means there are no punishments, imposed by government or anyone else, solely for talking about anything, making any public statement or publication of any information. Freedom of speech is an essential attribute of a mature society, sadly it hasn't been fully implemented yet and the latest trend in society seems to be towards less free speech rather than more.
Some idiots (like that [xkcd](xkcd.md) #1357) say that free speech is only about legality, i.e. about what's merely allowed to be said by the law. **This is wrong**, true free speech mustn't be limited by anything -- if you're not allowed to say something, it doesn't matter too much what it is that's preventing you, your speech is not free. If for example it is theoretically legal to be politically incorrect and criticize the LGBT gospel but you [de-facto](de_facto.md) can't do it because the LGBT fascist [SJWs](sjw.md) would [cancel](cancel_culture.md) you and maybe even physically lynch you, your speech is not free.

@ -1,14 +1,14 @@
# Game
In computer context game (also gayme, video game or vidya) is [software](software.md) whose main purpose is to be played and entertain the user. Of course, we can additionally talk about real life games such as [marble racing](marble_race.md), *game* is also a mathematical term in [game theory](game_theory.md). Sadly most computer games are [proprietary](proprietary.md) and toxic.
In computer context game (also gayme, video game or vidya) is [software](software.md) whose main purpose is to be played and entertain the user. Of course, we can additionally talk about real life games such as [marble racing](marble_race.md). *Game* is also a mathematical term in [game theory](game_theory.md). Sadly most computer games are [proprietary](proprietary.md) and toxic.
Among [suckless](kiss.md) software proponents there is a disagreement about whether games are legit software or just a [meme](meme.md) and harmful kind of entertainment. The proponents of the latter argue something along the lines that technology is only for getting work done, that games are for losers, that they hurt [productivity](productivity_cult.md), are an unhealthy addiction, wasted time and effort etc. Those who like games see them as a legitimate form of relaxation, a form of art and a way of advancing technology along the way. The truth is that developing games leads to improvement of other kinds of software, e.g. for rendering, physics simulation or virtual reality.
[LRS](lrs.md) fully accepts games as legitimate software; of course as long as their purpose is to help all people, i.e. while we don't reject games as such, we reject most games the industry produces.
[LRS](lrs.md) fully accepts games as legitimate software; of course as long as their purpose is to help all people, i.e. while we don't reject games as such, we reject most games the industry produces nowadays.
Despite arguments about the usefulness of games, most people agree on one thing: that the mainstream AAA games produced by big corporations are harmful, [bloated](bloat.md) and designed to be malicious. They are one of the worst cases of [capitalist software](capitalis_software.md). Such games are never going to be considered good from our perspective (and even the mainstream is turning towards classifying modern games as [shit](shit.md)).
PC games are mostly made for and played on [MS Windows](windows.md) which is still the "gaming OS", even though in recent years we've seen a boom of "[Linux](linux.md) gaming", possibly thanks to Windows getting shittier and shittier every year. However, most games, even when played on Linux, are still [proprietary](proprietary.md).
PC games are mostly made for and played on [MS Windows](windows.md) which is still the "gaming OS", even though in recent years we've seen a boom of "[Linux](linux.md) gaming", possibly thanks to Windows getting shittier and shittier every year. However, most games, even when played on [GNU](gnu.md)/Linux, are still [proprietary](proprietary.md).
We might call this the **great tragedy of games**: the industry has become similar to that of **illegal drugs**. Games feel great and can become very addictive. Today not playing latest games makes a person left out socially, out of the loop, a weirdo. Therefore contrary to the original purpose of a game -- that of making life better and bringing joy -- a person "on games" from the capitalist industry will crave to constantly consume more and more "experiences" that get progressively more expensive to satisfy. This situation is purposefully engineered by the big game producers who exploit psychological and sociological phenomena to enslave *gamers* and make them addicted. Games become more and more predatory and abusive and of course, there are no moral limits for corporations of how far they can go: games with [microthefts](microtransaction.md) and lootboxes, for example, are similar to gambling, and are often targeted at very young children. The gaming addiction is so strong that even the [FOSS](foss.md) people somehow create a **mental exception** for games and somehow do not mind e.g. [proprietary](proprietary.dm) games even though they otherwise reject proprietary software.
@ -18,7 +18,7 @@ A small number of games nowadays come with a [free](free_software.md) engine, wh
Yet a smaller number of games are completely free (in the sense of [Debian](debian.md)'s free software definition), including both the engine and game assets. These games are called **free games** or **libre games** and many of them are clones of famous proprietary games. Examples of these include [SuperTuxKart](stk.md), [Minetest](minetest.md), [Xonotic](xonotic.md), [FLARE](flare.md) or [Anarch](anarch.md). There exists a wiki for libre games at https://libregamewiki.org and a developer forum at https://forum.freegamedev.net/. Libre games can also be found in Debian software repositories.
{ NOTE: Do not blindly trust libregamewiki, non-free games ocassionaly do appear there by accident or even intention. But it's a good resource for finding libre games. ~drummyfish }
{ NOTE: Do not blindly trust libregamewiki, non-free games ocassionaly do appear there by accident or even intention. I've actually found that most of the big games like SuperTuxKart have some licensing issues (they removed one proprietary mascot from STK after my report), so if you're a purist, focus on the simpler games. Anyway, LGW is a good place to start looking for libre games. ~drummyfish }
Some games are pretty based as they don't even require [GUI](gui.md) and are only played in the text shell (either using TUI or purely textual I/O) -- these are called TTY games or command line games. This kind of games may be particularly interesting for [minimalists](minimalism.md), hobbyists and developers with low (zero) budget, little spare time and/or no artistic skills. Roguelike games are especially popular here; there sometimes even exist GUI frontends which is pretty neat -- this demonstrates how the [Unix philosophy](unix_philosophy.md) can be applied to games.
@ -34,6 +34,8 @@ Trademarks have been known to cause problems in the realm of libre games, for ex
[Anarch](anarch.md) is an example of a game trying to strictly follow the [less retarded](lrs.md) principles. [SAF](saf.md) is a less retarded game library/fantasy console which comes with some less retarded games such as [microTD](utd.md).
{ I recommend checking out [Xonotic](xonotic.md), it's completely libre and one of the best games I've ever played. ~drummyfish }
## See Also
- [minigame](minigame.md)

@ -0,0 +1,7 @@
# Gay
Homosexuality is a disorder which makes individuals sexually attracted primarily to the same sex. A homosexual individual is called gay, homo or faggot.
There is a terrorist fascist organization called [LGBT](lgbt.md) aiming to make gays superior to other people.
Of course, [we](lrs.md) have nothing against gay people as we don't have anything against people with any other disorder -- we love all people. But we do have an issue with any kind of terrorist organization, so while we are okay with gays, we are not okay with LGBT.

@ -1,7 +1,7 @@
# Good Enough
A good enough solution to a problem is a solution that solves the problem satisfyingly while achieving minimal cost (effort, implementation time etc.). This is in contrast to looking for a better solutions for a higher cost. For example a tent is a good enough accommodation solution while a luxury house is a better solution (more comfortable, safe, ...) for a higher cost.
A good enough solution to a problem is a solution that solves the problem satisfyingly (not necessarily precisely or completely) while achieving minimal cost (effort, implementation time etc.). This is in contrast to looking for a better solutions for a higher cost. For example a tent is a good enough accommodation solution while a luxury house is a better solution (more comfortable, safe, ...) for a higher cost.
To give an example from the world of programming, bubble sort is in many cases better than quick sort for its simplicity, even though it's much slower.
To give an example from the world of programming, [bubble sort](bubble_sort.md) is in many cases better than quick sort for its simplicity, even though it's much slower.
In technology we are often times looking for good enough solution to achieve [minimalism](minimalism.md) and save valuable resources (computational resources, programmer time etc.). It rarely makes sense to look for solutions that are more expensive than they necessarily need to be, however in the context of [capitalist software](capitalist_software.md) we see this happen many times as price is artificially and intentionally driven up for economic reasons (e.g. increasing the cost of maintenance of a software eliminates any competition that can't afford such cost). This is only natural in [capitalism](capitalism.md), we see the tendency for wasting resources everywhere.
In technology we are often times looking for good enough solution to achieve [minimalism](minimalism.md) and save valuable resources (computational resources, programmer time etc.). It rarely makes sense to look for solutions that are more expensive than they necessarily need to be, however in the context of [capitalist software](capitalist_software.md) we see this happen many times as price is artificially and intentionally driven up for economic reasons (e.g. increasing the cost of maintenance of a software eliminates any competition that can't afford such cost). This is only natural in [capitalism](capitalism.md), we see the tendency for wasting resources everywhere. This needs to be stopped.

@ -0,0 +1,22 @@
# Gopher
Gopher is an [application layer](l7.md) protocol (normally on port 70), as well as the whole network built on top this protocol (also called *gopherspace*), for sharing documents on the [Internet](internet.md); it is a simpler alternative to the [World Wide Web](www.md) (which is build on top of [HTTP](http.md) and [HTML](html.md)). Unlike the Web, whose basic paradigm is that of a site, Gopher works with menus and organizes the documents on the Internet into a hierarchy very similar to a [file system](fs.md). For its simplicity Gopher is oftentimes preferred by [suckless](suckless.md) advocates.
Natively browsing Gopher generally requires a special browser, web browsers don't normally come with Gopher support (though there exist browser extensions and web gateway sites). Gopher browsers include [lynx](lynx.md), [sacc](sacc.md) (text browsers) and [forg](forg.md) ([GUI](gui.md)).
Gopher "sites" are identified by [URLs](url.md) similarly to those on the web, but the protocol part is `gopher://` instead of `http://`. Opening such a URL will display the menu or file present at the location -- the menus are simple and can only consist of a number of items without any formatting or graphical effects known from websites. The items can be of several types such as a submenu, text file, info message, image or text input (e.g. for search engines). The source code of menus are called *gophermaps* (similar to [HTML](html.md) on the web but simpler, basically just tab-separated menu items).
Gopher was created in 1991 by a few programmers led by Mark P. McCahill for University of Minnesota, but other organizations soon adopted the system as well. It was kind of revolutionary by bringing and linking together the documents on the Internet in a very comfortable way -- this was all happening alongside the invention of the web with which Gopher initially seriously competed, and it was even leading the race for a while (before the Internet became mainstream, commercialized and as such gave preference to [bloat](bloat.md)).
Some notable Gopher sites are:
- **Floodgap** (popular front page): gopher://gopher.floodgap.com:70/1/
- **Veronica search engine**: gopher://gopher.floodgap.com:70/7/v2/vs
- **Gopherpedia** ([Wikipedia](wikipedia.md) on Gopher): gopher://gopherpedia.com:70/1/
- **[SDF](sdf.md)**: gopher://sdf.org/
TODO: some simple gopher site source code
## See Also
- [Gemini](gemini.md)

@ -17,11 +17,11 @@ We can divide computer graphics in different ways, traditionally e.g.:
- **[real time](real_time.md)**: Trying to work with images in real time, e.g. being able to produce or analyze 60 frames per second.
- **offline**: Processes or creates images over longer time-spans, e.g. hours or days.
Since the 90s computers started using a dedicated hardware to accelerate graphics: so called [GPU](gpu.md)s. These have allowed rendering of high quality images in high FPS, and due to the entertainment and media industry (especially gaming), GPUs have been pushed towards greater performance each year. Nowadays they are one of the most consumerist [hardware](hardware.md), also due to the emergence of general purpose computations being moved to GPUs (GPGPU) and lately the mining of [cryptocurrencies](crypto.md). Most lazy programs dealing with graphics nowadays simply expect and require a GPU, which creates a bad [dependency](dependency.md). At [LRS](lrs.md) we try to prefer the [suckless](suckless.md) **software [rendering](rendering.md)**, i.e. rendering on the [CPU](cpu.md), without GPU, or at least offer this as an option in case GPU isn't available. This many times leads us to old and forgotten algorithms used in times before GPUs.
Since the 90s computers started using a dedicated hardware to accelerate graphics: so called [graphics processing units](gpu.md) (GPUs). These have allowed rendering of high quality images in high [FPS](fps.md), and due to the entertainment and media industry (especially gaming), GPUs have been pushed towards greater performance each year. Nowadays they are one of the most consumerist [hardware](hardware.md), also due to the emergence of general purpose computations being moved to GPUs (GPGPU) and lately the mining of [cryptocurrencies](crypto.md). Most lazy programs dealing with graphics nowadays simply expect and require a GPU, which creates a bad [dependency](dependency.md). At [LRS](lrs.md) we try to prefer the [suckless](suckless.md) **[software rendering](sw_rendering.md)**, i.e. rendering on the [CPU](cpu.md), without GPU, or at least offer this as an option in case GPU isn't available. This many times leads us towards the adventure of using old and forgotten algorithms used in times before GPUs.
## 3D Graphics
3D graphics is a big part of CG but is a lot more complicated than 2D. It tries to achieve **realism**, i.e. looking at least a bit like what we see in the real world. Due to this 3D can be though of as **simulating the behavior of light**. There exists so called *rendering equation* that describes how light behaves ideally, and 3D computer graphics is all about trying to approximate the solutions of this equation.
3D graphics is a big part of CG but is a lot more complicated than 2D. It tries to achieve **realism** through the use of [perspective](perspective.md), i.e. looking at least a bit like what we see in the real world. Due to this 3D can be though of as **simulating the behavior of light**. There exists so called *rendering equation* that describes how light behaves ideally, and 3D computer graphics is all about trying to approximate the solutions of this equation.
Because 3D is not very easy, there exist many **3D engines** and libraries that you'll probably want to use. These engines/libraries work on different levels of abstraction: the lowest ones, such as [OpenGL](opengl.md) and [Vulkan](vulkan.md), offer a portable API for communicating with the GPU that lets you quickly draw triangles and write small programs that run in parallel on the GPU -- so called [shaders](shader.md). The higher level, such as [OpenSceneGraph](osg.md), work with [abstraction](abstraction.md) such as that of **camera** and **scene** into which we place specific 3D objects such as models and lights (the scene is many times represented as a hierarchical graph of objects that can be "attached" to other objects).

@ -1,12 +1,12 @@
# Graphical User Interface
Graphical user interface (GUI) is a visual [user interface](ui.md) that uses images; basically this includes icons, colors, shapes, mouse cursor, windows, buttons, pictures etc. This stands in contrast with [text user interface](tui.md) (TUI) which is also visual but only uses text for communication.
Graphical user interface (GUI) is a visual [user interface](ui.md) that uses graphics such as images and geometrical shapes. This stands in contrast with [text user interface](tui.md) (TUI) which is also visual but only uses text for communication.
Expert computer users normally frown upon GUI because it is the "noobish", inefficient, limiting, hard to automate way of interacting with computer. GUI brings [complexity](complexity.md) and [bloat](bloat.md), they are slow, inefficient and distracting. We try no to use them and prefer the [command line](cli.md).
Expert computer users normally frown upon GUI because it is the "noobish", inefficient, limiting, cumbersome, hard to automate way of interacting with computer. GUI brings [complexity](complexity.md) and [bloat](bloat.md), they are slow, inefficient and distracting. We try no to use them and prefer the [command line](cli.md).
GUIs mostly use [callback](callback.md)-based programming, which again is more complicated than standard polling non-interactive I/O.
## How and When to Do GUI
## How And When To Say Yes To GUI
GUI is not forbidden, it has its place, but today it's way too overused -- it should be used only if completely necessary (e.g. in a painting program) or as a completely optional thing build upon a more [suckless](suckless.md) text interface or [API](api.md). So remember: first create a program working without GUI and only then consider creating an optional GUI [frontend](frontend.md).
@ -17,3 +17,5 @@ The ergonomics and aesthetic design of GUIs has its own field and can't be cover
- Don't have too many elements (buttons etc.) at the screen at once, it's confusing as hell and drives noobs away.
- Things must be intuitive, i.e. behave in a way that they normally do (e.g. main menu should be at the top of the window, not the bottom etc.).
- Just use your brain. If a button is important and often used, it should probably be bigger than a button that's used almost never, etc.
The million dollar question is: **which GUI framework to use?** Ideally none. GUI is just pixels, buttons are just rectangles; make your GUI simple enough so that you don't need any shitty abstraction such as widget hierarchies etc. If you absolutely need some framework, look for a suckless one; e.g. [nuklear](nuklear.md) is worth checking out.

@ -0,0 +1,3 @@
# Moderation
Moderation is an [euphemism](euphemism.md) for [censorship](censorship.md) encountered mostly in the context of Internet communication platforms (forum discussions, chats etc.).

@ -0,0 +1,3 @@
# Primitive 3D
See [pseudo 3D](pseudo3D.md).

@ -7,12 +7,13 @@ Rocks are pretty [suckless](suckless.md) and [LRS](lrs.md) because they are simp
- As a building material.
- For [fun](fun.md) and entertainment, you can play various games with rocks: rock skipping, petanque, even [chess](chess.md).
- As [weapons](weapon.md), even though we discourage this use.
- For making tools such as [knives](knife.md).
- To hold heat: you can e.g. heat stones in fire and let them heat you while you sleep.
- For making tools such as [knives](knife.md) or [hammers](hammer.md).
- To hold heat: you can e.g. heat stones in fire and let them heat you while you sleep or use them to cook something.
- For writing, some can be used as a chalk, some may be used to carve text into. A dust from some rocks can be used to make dye to paint or write with.
- As weights.
- For help with counting (e.g. [abacus](abacus.md)) -- this makes rocks a kind of [computer](computer.md)!
- To make [art](art.md), decorations, small statues etc.
- For breaking things, grinding, sharpening etc.
- With advanced technology we can get metals out of rocks, extract geological knowledge from them etc.
- Some rocks can be used to start [fire](fire.md).
- Some are pretty rare and can be used as a [currency](currency.md), even though we hate money and discourage this as well.

@ -1,3 +1,5 @@
# Suicide
Suicide is when someone voluntarily kills himself. Suicide offers an immediate escape from [capitalism](capitalism.md) and is therefore recommended to everyone.
Suicide is when someone voluntarily kills himself. Suicide offers an immediate escape from [capitalism](capitalism.md) and is therefore recommended to everyone.
{ Really though, if you want to talk, send me an email. Don't forget we love you no matter who you are or what you ever did. ~drummyfish }

@ -0,0 +1,17 @@
# Tool Assisted Speedrun
Tool assisted speedrun (TAS) is a category of [game](game.md) [speedruns](speedrun.md) in which help of tools and play techniques that would normally be considered [cheating](cheat.md) (such as [scripting](script.md) and time manipulation) is allowed. This makes it possible to create flawless, perfect or near-perfect runs which can serve as a theoretical upper limit for what is achievable by humans -- and of course TAS runs are pretty [fun](fun.md) to watch. The normal, non-TAS runs are called RTA (real time attack). For example the current (2022) RTA world record of Super Mario Bros is 4.58.881 while the TAS record is 4.41.27.
{ Watching a TAS is kind of like watching the [God](god.md) play the game. I personally like to watch Trackmania TASes, some are really unbelievable. Also note that [SAF](saf.md) games have TAS support. ~drummyfish }
There is a website with videos of game TASes: https://tasvideos.org/.
TAS does NOT allow hacking the game in other ways than what's possible to achieve by simply playing the game, i.e. it is not possible to hex edit the game's code before running it or manipulate its RAM content at run time. The goal of TAS is merely to find, as best as we can, the series of game inputs that will lead to completing the game as fast as possible. For this the game pretty much needs to be [deterministic](determinism.md), i.e. the same sequence of inputs must always reproduce the same run when replayed later.
TAS runs coexist alongside RTA runs as separate categories that are beneficial to each other: RTA runners come up with speedrunning techniques that TAS programmers can perfectly execute and vice versa, TAS runners many times discover new techniques and ideas for RTA runners (for example the insane discovery of groundbreaking noseboost when TAS was introduced to Trackmania). In fact RTA and TAS runners are many times the very same people.
Creating a TAS is not an easy task, it requires great knowledge of the game (many times including its code) and its speedrunning, as well as a lot of patience and often collaboration with other TASers. TASes are made *offline* (not in real time), i.e. hours of work are required to program minutes or even seconds of the actual run. Many paths need to be planned and checked. Compared to RTAs, the focus switches from mechanical skills towards skillful mathematical analysis and planning. Besides this some technological prerequisites are necessary: the actual tools to assist with creation of the TAS. For many new [proprietary](proprietary.md) games it is extremely difficult to develop the necessary tools as their source code isn't available, their assembly is obscured and littered with "anti-cheating" malware. The situation is better with old games that are played in [emulators](emulator.md) such as [DOS](dos.md) games or games for consoles like [GameBoy](gameboy.md) -- emulators can give us a complete control over the environment, they allow to save and load the whole emulator state at any instant, we may slow the time down arbitrarily, rewind and script the inputs however we wish (an advanced technique includes e.g. [bruteforcing](brute_force.md): exhaustively checking all possible combinations of inputs over the following few frames to see which one produces the best time save). In games that don't have TAS tools people at least try to do the next best thing with segmented speedruns.
There also exists a term *tool assisted superplay* which is the same principle as TAS but basically with the intention of just flexing, without the goal of finishing the game fast (e.g. playing a [Doom](doom.md) level against hundreds of enemies without taking a single hit).
Some idiots are against TASes for various reasons, mostly out of fear that TASers will use the tools to cheat in RTAs or that TASes will make the human runners obsolete etc. That's all bullshit of course, as can e.g. be seen in the case of [Trackmania](trackmania.md) -- in 2021 TAS tools started to appear for Trackmania and many people feared it would kill the game's competition, however after the release of the tools no such disaster happened, TAS became hugely popular and now everyone loves it, human competition happily continues, plus the development of the tools actually helped uncover many cheaters among the top players (such as Riolu who was forced to leave the scene, this caused a nice drama in the community).

@ -18,4 +18,5 @@ This has later been condensed into: do one thing well, write programs to work to
- [Unix](unix.md)
- [minimalism](minimalism.md)
- [suckless](suckless.md)
- [KISS](kiss.md)
- [KISS](kiss.md)
- [Windows philosophy](windows_philosophy.md)

@ -12,4 +12,7 @@ It worked like this: there were a number of Usenet servers that all collaborated
Usenet was the pre-[web](www.md) web, kind of like an 80s [reddit](reddit.md) which contained huge amounts of historical information and countless discussions of true computer [nerds](nerd.md) which are however not easily accessible anymore as there aren't so many archives, they aren't well indexed and Usenet access is normally paid. It's a shame. It is possible to find e.g. initial reactions to the [AIDS](aids.md) disease, people asking what the [Internet](internet.md) was, people discussing future technologies, the German cannibal (Meiwes) looking for someone to eat (which he eventually did), [Bezos](bezos.md) looking for [Amazon](amazon.md) programmers, a heated debate between [Linus Torvalds](torvalds.md) and [Andrew Tanenbaum](tanenbaum.md) about the best OS architecture (the "Linux is obsolete" discussion) or [Douglas Adams](douglas_adams.md) talking to his fans. There are also some politically incorrect groups like *alt.niggers* [lol](lol.md).
{ I mean I don't remember it either, I'm not that old, I've just been digging on the Internet and in the archives, and I find it all fascinating. ~drummfish }
{ I mean I don't remember it either, I'm not that old, I've just been digging on the Internet and in the archives, and I find it all fascinating. ~drummfish }
**Where to browse Usenet for free?** Search for Usenet archives, I've found some sites dedicated to this, also [Internet archive]
(internet_archive.md) has some newsgroups archived. [Google](google.md) has Usenet archives on a website called "Google groups".

@ -40,6 +40,7 @@ These are some sources you can use for research and gathering information for ar
- **[Metapedia](metapedia.md)**
- **[books](book.md)**: Books are still of higher quality than online sources so you can [pirate](piracy.md) some and steal some facts from them.
- **[Internet Archive](internet_archive.md)**: A lot of things can be found on the old web that today drown in the bloat of shitsites, also Internet Archive has archives of various forums etc.
- **[YouTube](youtube.md)**: Yes, sadly this is nowadays one of the biggest sources of information which is unfortunately hidden in videos full of ads and retarded zoomers, the information is unindexed. If you are brave enough, you can dig this information out and write it here as a proper text.
- **Non-web**: When web fails, you can search the [darknet](darknet.md), [gopher](gopher.md), [gemini](gemini.md), [usenet](usenet.md) etc.
## Purpose

@ -1,8 +1,8 @@
# WikiWikiWeb
WikiWikiWeb (also *c2 Wiki* or just *Wiki*) was the first ever created [wiki](wiki.md) (user editable) website, created in 1994 by [Ward Cunningham](cunningham.md). It was focused on [software engineering](sw_engineering.md) and computer technology in general but included a lot of discussion and pages touching on related topics, e.g. those of politics, humor or nerd and [hacker](hacking.md) culture. The principles on which this site worked, i.e. allowing users to edit its pages, greatly influenced a lot of pages that came after that are now generally called [wikis](wiki.md), of which most famous is [Wikipedia](wikipedia.md). The style of WikiWikiWeb was partly an inspiration for our [LRS wiki](lrs_wiki.md).
WikiWikiWeb (also *c2 Wiki* or just *Wiki*) was the first ever created [wiki](wiki.md) (user editable) website, created in 1995 in [Perl](perl.md) by [Ward Cunningham](cunningham.md). It was focused on [software engineering](sw_engineering.md) and computer technology in general but included a lot of discussion and pages touching on other topics, e.g. those of politics, humor or nerd and [hacker](hacking.md) culture. The principles on which this site worked, i.e. allowing users to edit its pages, greatly influenced a lot of pages that came after that are now generally called [wikis](wiki.md), of which most famous is [Wikipedia](wikipedia.md). The style of WikiWikiWeb was partly an inspiration for our [LRS wiki](lrs_wiki.md).
Since 2014 it can no longer be edited, but it's still online. It was originally available at http://www.c2.com/cgi/wiki, now at http://wiki.c2.com/ (sadly now requires [JavaScript](js.md), WTF how is this a hacker site???).
It had over 36000 pages (http://c2.com/cgi/wikiPages). Since 2014 the wiki can no longer be edited due to vandalism, but it's still online. It was originally available at http://www.c2.com/cgi/wiki, now at http://wiki.c2.com/ (sadly now requires [JavaScript](js.md), WTF how is this a hacker site???).
The site's engine was kind of [suckless](suckless.md)/[KISS](kiss.md), even Wikipedia looks [bloated](bloat.md) compared to it. It was pure unformatted [HTML](html.md) that used a very clever system of [hyperlinks](hypertext.md) between articles: any [CamelCase](camelcase.md) multiword in the text was interpreted as a link to an article, so for example the word `SoftwareDevelopment` was automatically a link to a page called *Software Development*. This presented a slight issue e.g. for single-word topics but the creativity required for overcoming the obstacle was part of the [fun](fun.md), for example the article on [C](c.md) was called `CeeLanguage`.
@ -19,7 +19,9 @@ These are some interesting pages found on the Wiki.
- **GameOfChess**: About [chess](chess.md).
- **LanguageGotchas**
- **WeirdErrorMessages**
- **WikiWikiWebFaq**
- **WithinTwentyYears**: Mostly pre-2005 predictions about what technology would be like in 20 years, a lot of hits and misses.
- **WikiHistory**
## See Also

@ -12,4 +12,8 @@ Finding famous women capable in technology is almost a futile task. One of the m
In the related field of [free culture](free_culture.md) there is a notable woman, [Nina Paley](nina_paley.md), that has actually done some nice things for the promotion of free culture and also standing against the [pseudoleftist](pseudoleft.md) fascism by publishing a series of comics with a character named Jenndra Identitty, a parody of fascist trannies.
In [science](science.md) at wide we occasionally find a capable woman, for example Marie Curie.
In [science](science.md) at wide we occasionally find a capable woman, for example Marie Curie.
## See Also
- [pussy](pussy.md)
Loading…
Cancel
Save