This commit is contained in:
Miloslav Ciz 2023-05-08 15:05:15 +02:00
parent 879a37fd2b
commit 98ed4c7c84
14 changed files with 26 additions and 20 deletions

View file

@ -8,7 +8,7 @@ In a more detailed view abstraction is not one-dimensional, we may abstract in d
Let's take a look at a possible division of a [computer](computer.md) to different levels of abstraction, from lowest to highest (keep in mind it's also possible to define the individual levels differently):
- **[physics](physics.md)**: Computer is collection of atoms and subatomic particles such as electrons, operating with terms such as [energy](energy.md), charge, spin or quantum effects.
- **[physics](physics.md)**: Computer is a collection of atoms and subatomic particles such as electrons, operating with terms such as [energy](energy.md), charge, spin or quantum effects.
- **[electronic](electronics.md) circuit**: Computer is an [analog](analog.md) circuit in which electricity flows through wires and electronic components, operating with terms such as [voltage](voltage.md), [current](current.md), [transistor](transistor.md), resistor or electronic interference.
- **[logic circuit](logic_gate.md)**: Computer is a [binary](binary.md) [digital](digital.md) circuit; this is abstracting electricity away, now we are only considering two possible values carried by the wires: 1s and 0s. Operating with terms such as [logic gate](logic_gate.md), logic function, [multiplexer](multiplexer.md) or sequential circuit.
- **[machine code](machine_code.md)/[assembly](assembly.md)**: Computer is a machine with a specific [instruction architecture](isa.md), executing an [algorithm](algorithm.md) encoded as simple binary instructions, such as "add two numbers" or "write a number to memory", in a specific format that's different for different types of computers. Operating with terms such as CPU cycle, [opcode](opcode.md), [register](register.md), memory or [interrupt](interrupt.md).

View file

@ -33,14 +33,14 @@ The following is a list of software usually considered a good, typical example o
Besides the typical big programs that even normies admit are bloated there exists also a smaller bloat which many people don't see as such but which is nevertheless considered unnecessarily complex by some experts and/or idealists and/or hardcore minimalists, including [us](lrs.md).
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](depend.md) on Unicode.
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.
Small 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)
- config files (and other unnecessary file I/O that requires a file I/O library, not all computers have file systems, configs should be part of source code)
- library [linking](linking.md) ([header only](header_only.md) libraries are better)
- any [GPU](gpu.md), [openGL](opengl.md) (complex hardware and specifications, not all computers have complex GPUs, [software rendering](software_rendering.md) is better)
- any [GPU](gpu.md), [OpenGL](opengl.md) (complex hardware and specifications, not all computers have complex GPUs, [software rendering](software_rendering.md) is better)
- [Unicode](unicode.md) (big specification requiring special libraries and big fonts, [ASCII](ascii.md) is better)
- [antialiasing](antialiasing.md) (just ignore [aliasing](aliasing.md), use low resolution textures etc.)
- 64 bit architectures (they only exist to allow ungodly amounts of RAM, 32 bits completely suffice for any computation, many times even 16 or 8 bits are enough)
@ -52,7 +52,7 @@ Small bloat includes for example:
- [multithreading](multithreading.md), [parallelism](parallelism.md), [virtual memory](virtual_memory.md), ...
- [encryption](encryption.md), [security](security.md), [memory safety](memory_safery.md) (just don't care and/or don't handle sensitive data with computers connected to the internet, don't live in a shitty society)
- [database](database.md) software (plain files are better)
- [C](c.md) (something in between C and [brainfuck](brainfuck.md) would be ideal, e.g. [Forth](forth.md) may come close)
- [C](c.md) (something in between C and [brainfuck](brainfuck.md) would is likely ideal, e.g. [comun](comun.md) or [Forth](forth.md))
- [glibc](glibc.md), [gcc](gcc.md), [clang](clang.md) etc. (better alternatives are [tcc](tcc.md), [musl](musl.md), [uclibc](uclibc.md) etc.)
- letter accents/diacritics (can normally be ignored in most languages that use them)
- [jpg](jpg.md), [png](png.md), [svg](svg.md) and similar formats (e.g. [ppm](ppm.md) or [farbfeld](farbfeld.md) is better)

View file

@ -6,7 +6,7 @@ This is a [beautiful](beauty.md) [hack](hacking.md) for [LRS](lrs.md)/[suckless]
8bit samples corresponding to `unsigned char` are typically used with bytebeat. The formulas take advantage of [overflows](overflow.md) that create rhythmical patterns with potential other operations such as multiplication, division, addition, squaring, bitwise/logical operators and conditions adding more interesting effects.
Bytebeat also looks kind of cool when rendered as an image (outputting pixels instead of musical samples).
Bytebeat also looks kind of cool when rendered as an image (outputting pixels instead of audio samples).
## How To

7
comun.md Normal file
View file

@ -0,0 +1,7 @@
# Comun
Comun is a [LRS](lrs.md) [programming language](programming_language.md) made by [drummyfish](drummyfish.md) based on his ideals of [good technology](lrs.md). It is still work in progress, currently there is a [suckless](suckless.md) [C](c.md) implementation and a number of supplemental material (specification, tutorial, ...); the project repository is currently at https://codeberg.org/drummyfish/comun. The goal now is to make a [self hosted](self_hosting.md) implementation, i.e. write comun in comun.
The language is [minimalist](minimalism.md), [imperative](imperative.md), [stack](stack.md)-based and [low level](low_level.md), similar e.g. to [FORTH](forth.md).
TODO: more, code examples, ...

View file

@ -8,6 +8,6 @@ The advantage of digital technology is its resilience to noise which prevents de
**Digital vs analog, simple example:** imagine you draw two pictures with a pencil: one in a normal fashion on a normal paper, the other one on a grid paper, by filling specific squares black. The first picture is analog, i.e. it records continuous curves and position of each point of these curves can be measured down to extremely small fractions of millimeters -- the advantage is that you are not limited by any grid and can draw any shape at any position on the paper, make any wild curves with very fine details, theoretically even microscopic ones. The other picture (on a square grid) is digital, it is composed of separate points whose position is described only by whole numbers (*x* and *y* coordinates of the filled grid squares), the disadvantage is that you are limited by only being able to fill squares on predefined positions so your picture will look blocky and limited in amount of detail it can capture (anything smaller than a single grid square can't be captured properly), the [resolution](resolution.md) of the grid is limited, but as we'll see, imposing this limitations has advantages. Consider e.g. the advantage of the grid paper image with regards to copying: if someone wants to copy your grid paper image, it will be relatively easy and he can copy it exactly, simply by filling the exact same squares you have filled -- small errors and noise such as imperfectly filled squares can be detected and corrected thanks to the fact that we have limited ourselves with the grid, we know that even if some square is not filled perfectly, it was probably meant to be filled and we can eliminate this kind of noise in the copy. This way we can copy the grid paper image a million times and it won't change. On the other hand the normal, non-grid image will become distorted with every copy and in fact even the original image will become distorted by aging; even if that who is copying the image tries to trace it extremely precisely, small errors will appear and these errors will accumulate in further copies, and any noise that appears in the image or in the copies is a problem because we don't know if it really is a noise or something that was meant to be in the image.
Of course, digital data may become distorted too, it is just less likely and it's easier to deal with this. It for example happens that space particles (and similar physics phenomena, e.g. some quantum effects) flip bits in computer memory, i.e. there is always a probability of some [bit](bit.md) flipping from 0 to 1 or vice versa. We call this **data [corruption](corruption.md)**. This may also happen due to physical damage to digital media (e.g. scratches on the surface of CDs), imperfections in computer network transmissions (e.g. packet loss over [wifi](wifi.md)) etc. However we can introduce further measures to prevent, detect and correct data corruption, e.g. by keeping [redundant](redundancy.md) copies (2 copies of data allow detecting corruption, 3 copies allow even its correction), keeping [checksums](checksum.md) or [hashes](hash.md) (which allow only detection of corruption but don't take much extra space), employing error correcting codes etc.
Of course, digital data may become distorted too, it is just less likely and it's easier to deal with this. It for example happens that space particles (and similar physics phenomena, e.g. electronic interference) flip bits in computer memory, i.e. there is always a probability of some [bit](bit.md) flipping from 0 to 1 or vice versa. We call this **data [corruption](corruption.md)**. This may also happen due to physical damage to digital media (e.g. scratches on the surface of CDs), imperfections in computer network transmissions (e.g. packet loss over [wifi](wifi.md)) etc. However we can introduce further measures to prevent, detect and correct data corruption, e.g. by keeping [redundant](redundancy.md) copies (2 copies of data allow detecting corruption, 3 copies allow even its correction), keeping [checksums](checksum.md) or [hashes](hash.md) (which allow only detection of corruption but don't take much extra space), employing error correcting codes etc.
Another way in which digital data can degrade similarly to analog data is **reencoding between lossy-[compressed](compression.md) formats** (in the spirit of the famous "needs more jpeg" [meme](meme.md)). A typical example is digital movies: as new standard for video encoding are emerging, old movies are being reconverted from old formats to the new ones, however as video is quite heavily lossy-compressed, losses and distortion of information happens between the reencodings. This is best seen in videos and images circulating on the internet that are constantly being ripped and converted between different formats. This way it may happen that digital movies recorded nowadays may only survive into the future in very low quality, just like old analog movies survived until today in degraded quality. This can be prevented by storing the original data only with lossless compression and with each new emerging format create the release of the data from the original.

View file

@ -2,7 +2,7 @@
Dynamic programming is a programming technique that can be used to make many algorithms more efficient (faster). It works on the principle of repeatedly breaking given problem down into smaller subproblems and then solving one by one from the simplest and remembering already calculated results that can be reused later.
It is usually contrasted to the *[divide and conquer](divide_and_conquer.md)* (DAC) technique which at the first sight looks similar but is in fact quite different. DAC also subdivides the main problem into subproblems, but then solves them [recursively](recursive.md), i.e. it is a top-down method. DAC also doesn't remember already solved subproblem and may end up solving the same problem multiple times, wasting computational time. Dynamic programming on the other hand starts solving the subproblems from the simplest ones -- i.e. it is a **bottom-up** method -- and remembers solutions to already solved subproblems in some kind of a [table](lut.md) which makes it possible to quickly reuse the results if such subproblem is encountered again. The order of solving the subproblems should be made such as to maximize the efficiency of the algorithm.
It is usually contrasted to the *[divide and conquer](divide_and_conquer.md)* (DAC) technique which at the first sight looks similar but is in fact quite different. DAC also subdivides the main problem into subproblems, but then solves them [recursively](recursion.md), i.e. it is a top-down method. DAC also doesn't remember already solved subproblem and may end up solving the same problem multiple times, wasting computational time. Dynamic programming on the other hand starts solving the subproblems from the simplest ones -- i.e. it is a **bottom-up** method -- and remembers solutions to already solved subproblems in some kind of a [table](lut.md) which makes it possible to quickly reuse the results if such subproblem is encountered again. The order of solving the subproblems should be made such as to maximize the efficiency of the algorithm.
It's not the case that dynamic programming is always better than DAC, it depends on the situation. Dynamic programming is effective **when the subproblems overlap** and so the same subproblems WILL be encountered multiple times. But if this is not the case, DAC can easily be used and memory for the look up tables will be saved.

View file

@ -2,11 +2,11 @@
In computer context game (also gayme, video game or vidya) is [software](software.md) whose main purpose is to be played and interactively entertain the user. Of course, we can additionally talk about [real life](irl.md) games such as [marble racing](marble_race.md) or [football](football.md). *Game* is also a mathematical term in [game theory](game_theory.md). Sadly most computer games are [proprietary](proprietary.md) and [toxic](toxic.md).
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 MUH [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. **We, [LRS](lrs.md), fully accept 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.
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 MUH [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](art.md) that's pleasant both to make and enjoy as a finished piece, and also a way to advancing technology along the way (note we are NOT talking about consumerist games here; any consumerist art is bad). Developing games has historically led to improvements of other kinds of software, mainly e.g. 3D rendering, physics simulation and virtual reality. If games are done well, in a non-[capitalist](capitalism.md) way, then **we, [LRS](lrs.md), fully accept 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. We further argue that **in games it is acceptable to do what in real life is unethical** (even to characters controlled by other live players) and that this is in fact one of their greatest aspect as they allow to satisfy natural needs that were crucial in the jungle but became harmful in advanced society, such as those for [competition](competition.md), violence, [fascism](fascism.md), egoistic behavior and others -- provided the player can tell a difference between a game and real life of course. As such, games help us build a [better society](less_retarded_society.md) in which people can satisfy even harmful needs without doing harm; in a game it is acceptable to torture people, roleplay as a [capitalist](capitalism.md) or even verbally bully other players in chat (who joined the server willingly knowing this is just a simulation, a roleplay), even though these things would be unacceptable to do in real life.
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), [toxic](toxic.md), badly made and designed to be highly malicious, consumerist products. 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)).
Despite arguments about the usefulness of games, most people agree on one thing: that the mainstream AAA games produced by big [corporations](corporation.md) are harmful, [bloated](bloat.md), [toxic](toxic.md), badly made and designed to be highly malicious, consumerist products. 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. Many normies nowadays are practicing "mobile gayming" which may be even worse. However, most games, even when played on [GNU](gnu.md)/Linux, are still [proprietary](proprietary.md), [capitalist](capitalist_software.md) and [bloated](bloat.md) as hell.
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. Many normies nowadays are practicing "mobile" or console gayming which may be even worse. However, most games, even when played on [GNU](gnu.md)/Linux, are still [proprietary](proprietary.md), [capitalist](capitalist_software.md) and [bloated](bloat.md) as hell.
We might call this the **great tragedy of games**: the industry has become similar to the industry of **drug abuse**. Games feel great and can become very addictive, especially to people not aware of the dangers (children). Today not playing latest games makes you 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 -- an individual "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 game industry cooperates with the hardware and software industry to together produce a consumerist hell in which one is required to constantly update his hardware and software and to keep spending money just to stay in. 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. Even most of the developers of free software games can't mentally separate themselves from the concepts set in place by capitalist games, they try to subconsciously mimic the toxic attributes of such games (bloat, unreasonably realistic graphics and hardware demands, content consumerism, [cheating](cheating.md) "protection", language filters, ...).

View file

@ -1,8 +1,6 @@
# History
WIP
{ There are probably errors, you can send me an email if you find some. ~drummyfish }
{ Though history is usually written by the winners, this one was written by a loser :) Keep in mind there may appear errors, you can send me an email if you find some. ~drummyfish }
This is a brief summary of history of [technology](technology.md) and [computers](computer.md).

View file

@ -1,6 +1,6 @@
# LGBT
LGBT, LGBTQ+, LGBTQIKKAWANSQKKALQNMQW (lesbian [gay](gay.md), [bisexual](bisexual.md), [transsexual](tranny.md), [queer](queer.md) and whatever else they're gonna invent) is a toxic [pseudoleftist](pseudoleft.md) [fascist](fascist.md) political group whose ideology is based on superiority of certain selected minority sexual orientations. They are a highly [violent](violence.md), [bullying](bully.md) movement (not surprisingly centered in the [US](us.md) but already spread around the whole world) practicing [censorship](censorship.md), Internet lynching ([cancel culture](cancel_culture.md)), discrimination, spread of extreme [propaganda](propaganda.md), harmful [lies](soyence.md), culture poison such as [political correctness](political_correctness.md) and other [evil](evil.md).
LGBT, LGBTQ+, LGBTQIKKAWANSQKKALQNMQW (lesbian [gay](gay.md), [bisexual](bisexual.md), [transsexual](tranny.md), [queer](queer.md) and whatever else they're gonna invent) is a toxic [pseudoleftist](pseudoleft.md) [fascist](fascist.md) political group whose ideology is based on superiority of certain selected minority sexual orientations. They are a highly [violent](violence.md), [bullying](bully.md) movement (not surprisingly centered in the [US](usa.md) but already spread around the whole world) practicing [censorship](censorship.md), Internet lynching ([cancel culture](cancel_culture.md)), discrimination, spread of extreme [propaganda](propaganda.md), harmful [lies](soyence.md), culture poison such as [political correctness](political_correctness.md) and other [evil](evil.md).
LGBT is related to the ideas of equality in a similar way in which crusade wars were related to the nonviolent teaching of [Jesus](jesus.md), it shows how an idea can be completely twisted around and turned on its head so that it's directly contradicting its original premise.

3
lrs.md
View file

@ -19,7 +19,7 @@ The definition here is not strict but rather fuzzy, it is in a form of ideas, st
- Being [free software](free_software.md) legally but ALSO practically (well commented, not bloated and obscured etc., so as to truly and practically enable the freedoms to study, modify etc.). This may also include attributes such as [decentralization](decentralization.md).
- Being [free culture](free_culture.md), i.e. LRS programs are free as a whole, including art assets, data etc.
- Minimizing [dependencies](dependency.md), even those such as standard library or relying on OS concepts such as files or threads, even indirect ones such as build systems and even non-software ones (e.g. avoiding [floating point](float.md), GPU, 64bit etc.).
- Very portable, non-discriminating, i.e. being written in a portable language (C etc.), using as little resources as possible (RAM, CPU, ...) and so on.
- Very portable, non-discriminating, i.e. being written in a portable language (C, [comun](comun.md) etc.), using as little resources as possible (RAM, CPU, ...) and so on.
- [Future-proof](future_proof.md), [self-contained](self_contained.md), not controlled by anyone (should follow from other points). This may even include attributes such as physical durability and design that maximizes the devices life.
- [Hacking](hacking.md) friendly and inviting to improvements and customization, highly adhering to [hacker culture](hacking.md).
- Built on top of other LRS technology such as the [C99](c.md) language, Unix OS, our own libraries etc.
@ -40,6 +40,7 @@ There are other reason for LRS as well, for example it can be very satisfying an
The "official" LRS programs and libraries have so far been solely developed by [drummyfish](drummyfish.md), the "founder" of LRS. These include:
- **[Anarch](anarch.md)**: Game similar to [Doom](doom.md).
- **[comun](comun.md)**: LRS programming language
- **[raycastlib](raycastlib.md)**: Advanced 2D [raycasting](raycasting.md) rendering library.
- **[SAF](saf.md)**: Tiny library for small portable games.
- **[small3dlib](small3dlib.md)**: Simple software rasterizer for 3D rendering.

View file

@ -38,7 +38,7 @@ Are you a failure? Learn [which type](fail_ab.md) you are.
**Before contributing please read the [rules & style](wiki_style.md)! By contributing you agree to release your contribution under our [waiver](wiki_rights.md).** {But contributions aren't really accepted RN :) ~drummyfish }
We have a **[C tutorial](c_tutorial.md)**! It [rocks](rock.md).
We have a **[C tutorial](c_tutorial.md)**! It [rocks](rock.md). We also now have **our own programming language!** It is named [comun](comun.md).
Pay us a visit on the [Island](island.md) and pet our [dog](dog.md)! And come mourn with us in the [cathedral](cathedral.md), because **technology is dying**. [Modern](modern.md) age is a pile of shit extending to another galaxy. The future is dark but we do our best to bring the light, even knowing it is futile.

View file

@ -2,7 +2,7 @@
*Not to be confused with [Niger](niger.md).*
Nigger (also nigga, niBBa, N-word, negro or chimp) is a forbidden word that refers to a member of the [black](black.md) [race](race.md), [SJWs](sjw.md) call it a [politically incorrect](political_correctness.md) "slur". Its counterpart targeted on white people is *[cracker](cracker.md)*. To Harry Potter fans the word may be compared to the word Voldemort.
Nigger (also nigga, niBBa, N-word, negro, negroid or chimp) is a forbidden word that refers to a member of the [black](black.md) [race](race.md), [SJWs](sjw.md) call it a [politically incorrect](political_correctness.md) "slur". Its counterpart targeted on white people is *[cracker](cracker.md)*. To Harry Potter fans the word may be compared to the word Voldemort which everyone is just afraid to say.
Let us remind new readers that we, [LRS](lrs.md), love all living beings, even black people <3 But we do not support [political correctness](political_correctness.md).

4
pi.md
View file

@ -10,9 +10,9 @@ Pi to 100 decimal digits is:
Pi to 100 binary fractional digits is:
11.001001000011111101101010100010001000010110100011000010001101 001100010011000110011000101000101110000...
11.001001000011111101101010100010001000010110100011000010001101001100010011000110011000101000101110000...
Some people memorize the digits of pi for [fun](fun.md) and competition, the world record as of 2022 is 70030 memorized digits. Some people make [mnemonics](mnemonic.md) for remembering the digits of pi (this is known as *PiPhilology*), for example *"Now I fuck a pussy screaming in orgasm"* is a sentence that helps remember the first 8 digits (number of letters in each word encodes the digit).
Some people memorize digits of pi for [fun](fun.md) and competition, the world record as of 2022 is 70030 memorized digits. Some people make [mnemonics](mnemonic.md) for remembering the digits of pi (this is known as *PiPhilology*), for example *"Now I fuck a pussy screaming in orgasm"* is a sentence that helps remember the first 8 digits (number of letters in each word encodes the digit).
**PI IS NOT INFINITE**. [Soyence](soyence.md) popularizators and nubs often say shit like "OH LOOK pi is so special because it infiniiiiiite". Pi is completely finite with an exact value that's not even greater than 4, what's infinite is just its expansion in [decimal](decimal.md) (or similar) numeral system, however this is nothing special, even numbers such as 1/3 have infinite decimal expansion -- yes, pi is more interesting because its decimal digits are non-repeating and appear [chaotic](chaos.md), but that's nothing special either, there are infinitely many numbers with the same properties and mysteries in this sense (most famously the number [e](e.md) but besides it an infinity of other no-name numbers). The fact we get an infinitely many digits in expansion of pi is given by the fact that we're simply using a system of writing numbers that is made to handle integers and simple fractions -- once we try to write an unusual number with our system, our [algorithm](algorithm.md) simply ends up stuck in an [infinite loop](infinite_loop.md). We can create systems of writing numbers in which pi has a finite expansion (e.g. base pi), in fact we can already write pi with a single symbol: *pi*. So yes, pi digits are interesting, but they are NOT what makes pi special among other numbers.

View file

@ -43,7 +43,7 @@ These are some notable software renderers:
- **[id Tech](id_tech.md)**: Multiple engines by [Id software](id.md) (later made [FOSS](foss.md)) used for games like [Quake](quake.md) included a software renderer. Quake's SW renderer was partially described in the *Michael Abrash's Graphics Programming Black Book*.
- **[Irrlich](irrlicht.md)**: [FOSS](foss.md) game engine including a software renderer as one of its [backends](backend.md).
- **[Mesa](mesa.md)**: [FOSS](foss.md) implementation of [OpenGL](opengl.md) that includes a software rasterizer.
- **[small3dlib](s3l.md)**: [LRS](lrs.md) [C](c.md) 3D rasterizer, very simple.
- **[small3dlib](small3dlib.md)**: [LRS](lrs.md) [C](c.md) 3D rasterizer, very simple.
- **SSRE**: The guy who wrote [LIL](lil.md) also made this renderer named Shitty Software Rendering Engine, accessible [here](http://runtimeterror.com/tech/ssre/).
- **[System Shock](system_shock.md) engine**: Old proprietary game engine.
- **[TinyGL](tinygl.md)**: Implements a subset of [OpenGL](opengl.md).