master
Miloslav Ciz 3 months ago
parent cafa9c826c
commit a9b582054b

@ -20,4 +20,9 @@ Secondly the idea of getting rid of a state in capitalism doesn't even make sens
All in all, "anarcho" capitalism is advocated mostly by children who don't know a tiny bit about anything, by children who are being brainwashed daily in schools by capitalist propaganda, with no education besides an endless stream of ads from their smartphones, or capability of thinking on their own. However, these children are who will run the world soon. It is sad, it's not really their fault, but through them the system will probably come into existence. Sadly "anarcho" capitalism is already a real danger and a very likely future. It will likely be the beginning of our civilization's greatest agony. We don't know what to do against it other than provide education.
God be with us.
God be with us.
## See Also
- [capitalism](capitalism.md)
- [libertarianism](libertarianism.md)

@ -0,0 +1,13 @@
# Cat-v
Cat-v.org (accessible at http://cat-v.org) is a [minimalist](minimalism.md) [hacker](hacking.md) website describing itself as a *random contrarian insurgent organization* which promotes [critical thinking](critical_thinking.md), [free speech](free_speech.md), examines [technology](tech.md) from minimalist point of view, opposes [orthodoxy](orthodoxy.md) and talks about wider context of technology such as [politics](politics.md), society and philosophy; the site hosts a few "subsites", e.g. those related to [Plan 9](plan9.md) OS and [Go](golang.md) language, however most famous is its *[encyclopedia](encyclopedia.md) of things considered harmful* (http://harmful.cat-v.org/). The whole site, especially the "harmful" section (which was the first one), revolves around the phrase **"considered [harmful](harmful.md)"** -- this is basically a [computer science](compsci.md) academic [meme](meme.md) that started with a 1968 paper named "Go To Statement Considered Harmful" which was later followed by dozens of similarly named articles; cat-v is taking this to the next level by building a whole website about all things *considered harmful*. The name of the site itself comes from [Rob Pike](rob_pike.md)'s 1983 presentation "UNIX Style, or cat -v Considered Harmful" that criticized the `-v` flag of the [Unix](unix.md) [cat](cat.md) program as such flag, strictly speaking, violates the [Unix philosophy](unix_philosophy.md) (cat should only concatenate files, the flag makes it do something that should rather be done by another program). Though maybe coincidental, the name is also similar to CatB (a short for famous hacker essay/book [Cathedral and Bazaar](cathedral_and_bazaar.md)). The site is very nice, made in plain HTML minimalist style, working with HTTP and besides others contains a ton of great quotes on every topic, there is also an [IRC](irc.md), mailing list and a blog.
The section "considered harmful" contains many things, even quite general ones, probably to provoke thought -- one should likely not see a thing present on the list as something we have to always necessarily get rid of -- though many times we should! -- sometimes we just may think about how to improve the thing or minimize its negative impact; try to think of harmful things like "things that suck"; everything sucks, some things just [suck less](suckless.md). Among things listed under the *harmful* section are besides others all [software](software.md), [OOP](oop.md), [GNU](gnu.md), [Linux](linux.md), [C++](cpp.md), dynamic [linking](linking.md), [Java](java.md), [XML](xml.md), [vim](vim.md), [Emacs](emacs.md), [GPL](gpl.md) (one recommended alternative being [CC0](cc0.md) instead), [Perl](perl.md), [standards](standard.md), Sweden, [gay](gay.md) marriage, marriage, children, words, [intellectual property](intellectual_property.md), [religion](religion.md), [science](soyence.md), minimum wage, the Avatar movie, [Wikileaks](wikileaks.md), [people](people.md), [economics](economics.md), [global warming](global_warming.md) scaremongering, [security](security) theater etc.
Cat-v has existed since at least 2005 (according to Internet Archive) and was started by [Uriel M. Pereira](uriel.md), a minimalist hacker who greatly contributed to a lot of [suckless](suckless.md) software and who committed suicide in 2012. Suckless and cat-v seem to be pretty close -- suckless.org has its own section of harmful things called simply "sucks".
From [LRS](lrs.md) point of view cat-v is based in great many ways, mainly its focus on the big picture and wider context or technology, promotion of minimalism, freedom of speech and thinking and anti-orthodoxy -- it is not a soyboy site, good quality sites without [SJW](sjw.md)ery are greatly appreciated. However we would also find disagreements e.g. on [Plan 9](plan9.md) and [Go](goland.md), which we consider greatly harmful. And of course some politics etc.
## See Also
- [suckless](suckless.md)

@ -1,6 +1,6 @@
# Copyleft
Copyleft (also share-alike) is a concept of allowing sharing and modifications of intellectual works (such as pictures, music or computer programs) on the legal condition that others will share it under the same terms (i.e. that they will also allow the work's further free sharing and modification etc.); it was created by the critics of [copyright](copyright.md) as a "more sane" take on sharing. Copyleft is widely utilized by some proponents of [free (as in freedom) software](free_software.md) and [culture](free_culture.md) to legally ensure this software/art and its modifications will always remain free, however other camps of freedom proponents argue that copyleft is still too restrictive and share their works under [even more relaxed](premissive.md) legal conditions. Copyleft kind of [hacks](hacking.md) [copyright](copyright.md) to de-facto remove copyright (the monopoly it creates) by its own power.
Copyleft (also share-alike) is a concept of allowing sharing and modifications of intellectual works (such as pictures, music or computer programs) on the legal condition that others will share it under the same terms (i.e. that they will also allow the work's further free sharing and modification etc.); it was created by the critics of [copyright](copyright.md) as a "more sane" take on sharing. The symbol of copyleft is mirrored copyright symbol, i.e. horizontally flipped C in circle (C looking "to the left"). Copyleft is widely utilized by some proponents of [free (as in freedom) software](free_software.md) and [culture](free_culture.md) to legally ensure this software/art and its modifications will always remain free, however other camps of freedom proponents argue that copyleft is still too restrictive and share their works under [even more relaxed](premissive.md) legal conditions. Copyleft kind of [hacks](hacking.md) [copyright](copyright.md) to de-facto remove copyright (the monopoly it creates) by its own power.
Copyleft has been by its mechanisms likened to a virus because once it is applied to certain software, it "infects" it and will force its conditions on any [descendants](fork.md) of that software, i.e. it will spread itself (in this case the word virus does not bear a negative connotation, at least to some, they see it as a "good virus").

@ -2,19 +2,21 @@
WORK IN PROGRESS
Central processing unit (CPU, often just *processor*) is the main, most central part of a [computer](computer.md), the one that performs the computation by following the instructions of the main program; CPU can be seen as the computer's brain. It stands at the center of the computer design -- other parts, such as the main [memory](ram.md), [hard disk](hdd.md) and [input/output](io.md) devices like keyboard and monitor are present to serve the CPU, CPU is at the top and issues commands to everyone else. A CPU is normally composed of [ALU](alu.md) (arithmetic logic unit, the circuit performing calculations), CU ([control unit](control_unit.md), the circuit that directs the CPU's operation), a relatively small amount of memory (e.g. its registers and [cache](cache.md), the main [RAM](ram.md) memory is NOT part of a CPU!) and possibly some other parts. A specific model of CPU is characterized by its [instruction set](isa.md) (ISA, e.g. [x86](x86.md) or [Arm](arm.md)), which determines the [machine code](machine_code.md) it will understand, then its [transistor](transistor.md) count (nowadays roughly billions), operation [frequency](frequency.md) or **clock rate** (defining how many instructions per second it can execute, nowadays typically billions; the frequency can also be increased with [overclocking](overclocking.md)), number of cores (determining how many programs it can run in parallel) and also other parameters and "features" such as amount of cache memory, possible operation modes etcetc. We also often associate the CPU with some **number of bits** that's often connected to the data [bus](bus.md) width and the CPU's native integer size, i.e. for example a 16 bit CPU will likely have 16 bit integer registers, it will see the memory as a sequence of 16 bit words etc. (note the CPU can still do higher bit operations but they'll typically have to be emulated so they'll be slower, will take more instructions etc.) -- nowadays most mainstream CPUs are 64 bit (to allow ungodly amounts of RAM), but 32 or even 16 and 8 bits is usually enough for [good programs](lrs.md). CPU is not to be confused with microprocessor, a CPU that's physically a single small integrated circuit, and [MCU](mcu.md), a small single board computer which is composed of a CPU and other parts.
Central processing unit (CPU, often just *processor*) is the main, most central part of a [computer](computer.md), the one that performs the computation by following the instructions of the main program; CPU can be seen as the computer's brain. It stands at the center of the computer design -- other parts, such as the main [memory](ram.md), [hard disk](hdd.md) and [input/output](io.md) devices like keyboard and monitor are present to serve the CPU, CPU is at the top and issues commands to everyone else. A CPU is normally composed of [ALU](alu.md) (arithmetic logic unit, the circuit performing calculations), CU ([control unit](control_unit.md), the circuit that directs the CPU's operation), a relatively small amount of memory (e.g. its registers and [cache](cache.md), the main [RAM](ram.md) memory is NOT part of a CPU!) and possibly some other parts. A specific model of CPU is characterized by its [instruction set](isa.md) (ISA, e.g. [x86](x86.md) or [Arm](arm.md), which we mostly divide into [CISC](cisc.md) and [RISC](risc.md)), which determines the [machine code](machine_code.md) it will understand, then its [transistor](transistor.md) count (nowadays billions), operation [frequency](frequency.md) or **clock rate** (defining how many instructions per second it can execute, nowadays typically billions; the frequency can also be increased with [overclocking](overclocking.md)), number of cores (determining how many programs it can run in parallel) and also other parameters and "features" such as amount of cache memory, possible operation modes etcetc. We also often associate the CPU with some **number of bits** (called e.g. *[word](word.md) size*) that's often connected to the data [bus](bus.md) width and the CPU's native integer size, i.e. for example a 16 bit CPU will likely have 16 bit integer registers, it will see the memory as a sequence of 16 bit words etc. (note the CPU can still do higher bit operations but they'll typically have to be emulated so they'll be slower, will take more instructions etc.) -- nowadays most mainstream CPUs are 64 bit (to allow ungodly amounts of RAM), but 32 or even 16 and 8 bits is usually enough for [good programs](lrs.md). CPU in form of a single small integrated circuit is called *microprocessor*. CPU is not to be confused with [MCU](mcu.md), a small single board computer which is composed of a CPU and other parts.
CPU is meant for **general purpose computations**, i.e. it can execute anything reasonably fast but for some tasks, e.g. processing HD video, won't reach near optimum speed, which is why other specialized processing units such as [GPU](gpu.md)s (graphics processing unit) and sound cards exist. As a general [algorithm](algorithm.md) executing unit CPU is made for executing **linear** programs, i.e. a series of instructions that go one after another; even though CPUs nowadays typically have multiple cores thanks to which they can run several linear programs in parallel, their level of parallelism is still low, not nearly as great as that of a GPU for example. However CPUs are [good enough](good_enough.md) for most things and they are extremely fast nowadays, so a [suckless](suckless.md)/[LRS](lrs.md) program will likely choose to only rely on CPU, knowing CPU will be present in any computer and so that our program will be [portable](portability.md).
Designs of CPUs differ, some may aim for very high performance while other ones may prefer low power consumption or low transistor count -- remember, a more complex CPU will require more [transistors](transistor.md) and will be more expensive! Of course it will also be harder to design, debug etc., so it may be better to [keep it simple](kiss.md) when designing a CPU. For this reason many CPUs, e.g. those in [embedded](embedded.md) [microcontrollers](mcu.md), intentionally lack cache, [microcode](microcode.md), multiple cores or even a complex instruction pipeline.
TODO: parts, pipeline, diagrams, modes, transistor count history ...
**WATCH OUT**: [modern](modern.md) mainstream CPUs (i.e. basically the desktop ones, soon probably mobile ones too) are [shit](shit.md), they are hugely [consumerist](consumerism.md), [bloated](bloat.md) (they literally include shit like [GPU](gpu.md)s and whole [operating systems](os.md), e.g. Intel's [ME](me.md) runs [Minix](minix.md)) and have built-in antifeatures such as [backdoor](backdoor.md)s (post 2010 basically all Intel and AMD CPUs, see Intel [Management Engine](me.md) and AMD [PSP](psp.md)) that can't be disabled and that allow remote infiltration of your computer by the CPU manufacturer (on hardware level, no matter what operating system you run). You are much better off using a simple CPU if you can ([older](old.md), [embedded](embedded.md) etc.).
## Details
TODO: diagrams, modes, transistor count history ...
Let's take a look at how a typical CPU works. Remember that anything may differ between CPUs, you can think of doing things differently and many real world CPUs do. Also we may simplify some things here, real world CPUs are complicated as hell.
**What does a CPU really do?** Basically it just reads instructions from the memory (depending on specific computer architecture this may be [RAM](ram.md) or [ROM](rom.md)) and does what they say -- these instructions are super simple, often things like "add two numbers", "write a number to memory" and so on. The instructions themselves are just [binary](binary.md) data in memory and their format depends on each CPU, or its **[instruction set](isa.md)** (basically a very low level language it understands) -- each CPU, or rather a CPU family, may generally have a different instruction set, so a program in one instruction set can't be executed by a CPU that doesn't understand this instruction set. The whole binary program for the CPU is called **[machine code](machine_code.md)** and machine code corresponds to **[assembly](assembly.md) language** (basically a textual representation of the machine code, for better readability by humans) of the CPU (or better said its instruction set). So a CPU can be seen as a hardware [interpreter](interpreter.md) of specific machine code, machine code depends on the instruction set and programmer can create machine code by writing a program in assembly language (which is different for each instruction set) and then using an assembler to translate the program to machine code. Nowadays mostly two instruction sets are used: [x86](x86.md) and [Arm](arm.md), but there are also other ones, AND it's still not so simple because each instruction set gets some kind of updates and/or has some extensions that may or may not be supported by a specific CPU, so it's a bit messy.
**What does a CPU really do?** Basically it just reads instructions from the memory (depending on specific computer architecture this may be [RAM](ram.md) or [ROM](rom.md)) and does what they say -- these instructions are super simple, often things like "add two numbers", "write a number to memory" and so on. The instructions themselves are just [binary](binary.md) data in memory and their format depends on each CPU, or its **[instruction set](isa.md)** (basically a very low level language it understands) -- each CPU, or rather a CPU family, may generally have a different instruction set, so a program in one instruction set can't be executed by a CPU that doesn't understand this instruction set. The whole binary program for the CPU is called **[machine code](machine_code.md)** and machine code corresponds to **[assembly](assembly.md) language** (basically a textual representation of the machine code, for better readability by humans) of the CPU (or better said its instruction set). So a CPU can be seen as a hardware [interpreter](interpreter.md) of specific machine code, machine code depends on the instruction set and programmer can create machine code by writing a program in assembly language (which is different for each instruction set) and then using an assembler to translate the program to machine code. Nowadays mostly two instruction sets are used: [x86](x86.md) and [Arm](arm.md), but there are also other ones, AND it's still not so simple because each instruction set gets some kind of updates and/or has some extensions that may or may not be supported by a specific CPU, so it's a bit messy. For example [IA-32](ia_32.md) and [x86_64](x86_64.md) are two different versions of the x86 ISA, one 32 bit and one 64 bit.
The CPU has some internal state (we can see it as a [state machine](finite_state_machine.md)), i.e. it has a few internal variables, called **[registers](register.md)**; these are NOT variables in RAM but rather in the CPU itself, there is only a few of them (there may be let's say 32) but they are extremely fast. What exactly these registers are, what they are called, how many [bits](bit.md) they can hold and what their purpose is depends again on the instruction set architecture. However there are usually a few special registers, notably the **program counter** which holds the address of the currently executed instruction. After executing an instruction program counter is incremented so that in the nest step the next instruction will be executed, AND we can also modify program counter (sometimes directly, sometimes by specialized instructions) to jump between instruction to implement branching, loops, function calls etc.
@ -22,7 +24,7 @@ So at the beginning (when powered on) the CPU is set to some initial state, most
A CPU works in **clock cycles**, i.e. it is a sequential circuit which has so called *clock* input; on this input voltage periodically switches between high and low (1 and 0) and each change makes the CPU perform another operation cycle. How fast the clock changes is determined by the clock **frequency** (nowadays usually around 3 GHz) -- the faster the frequency, the faster the CPU will compute, but the more it will also heat up (so we can't just set it up arbitrarily high, but we can [overclock](overclocking.md) it a bit if we are cooling it down). WATCH OUT: **one clock cycle doesn't necessarily equal one executed instruction**, i.e. frequency of 1 Hz doesn't have to mean the CPU will execute 1 instruction per second because executing an instruction may take several cycles (how many depends on each instruction and also other factors). The number saying how many cycles an instruction takes is called CPI (cycles per instruction) -- CPUs try to aim for CPI 1, i.e. they try to execute 1 instruction per cycle, but they can't always do it.
One way to try to achieve CPI 1 is by optimizing the *fetch, decode, execute* cycle in hardware so that it's performed as fast as possible. This is typically done by utilizing an instruction **[pipeline](pipeline.md)** -- a pipeline has several stages that work in parallel so that when one instruction is entering e.g. the *decode* stage, another one is already entering the *fetch* stage (and the previous instruction is in *execute* stage), i.e. we don't have to wait for an instruction to be fully processed before starting to process the next one. This is practically the same principle as that of manufacturing lines in factories; if you have a long car manufacturing pipeline, you can make a factory produce let's say one car each hour, though it is impossible to make a single car from scratch in one hour (or imagine e.g. a university producing new PhDs each year despite no one being able to actually earn PhD in a year). This is also why branching (jumps between instructions) are considered bad for program performance -- a jump to different instruction makes the CPU have to throw away its currently preprocessed instruction because that will not be executed (though CPUs again try to deal with this with so called *branch prediction*, but it can't work 100%).
One way to try to achieve CPI 1 is by optimizing the *fetch, decode, execute* cycle in hardware so that it's performed as fast as possible. This is typically done by utilizing an instruction **[pipeline](pipeline.md)** -- a pipeline has several stages that work in parallel so that when one instruction is entering e.g. the *decode* stage, another one is already entering the *fetch* stage (and the previous instruction is in *execute* stage), i.e. we don't have to wait for an instruction to be fully processed before starting to process the next one. This is practically the same principle as that of manufacturing lines in factories; if you have a long car manufacturing pipeline, you can make a factory produce let's say one car each hour, though it is impossible to make a single car from scratch in one hour (or imagine e.g. a university producing new PhDs each year despite no one being able to actually earn PhD in a year). This is also why branching (jumps between instructions) are considered bad for program performance -- a jump to different instruction makes the CPU have to throw away its currently preprocessed instruction because that will not be executed (though CPUs again try to deal with this with so called *branch prediction*, but it can't work 100%). Some CPUs even have multiple pipelines, allowing for execution of multiple instructions at the same time -- however this can only be done sometimes (the latter instruction must be independent of the former, also the other pipelines may be simpler and able to only handle simple instructions).
In order for a CPU to be useful it has to be able to perform some **[input/output](io.md)**, i.e. it has to be able to retrieve data from the outside and present what it has computed. Notable ways of performing I/O are:
@ -36,8 +38,46 @@ Mainstream consoomer CPUs nowadays have multiple **[cores](core.md)** so that ea
**[Interrupts](interrput.md)** are an important concept for the CPU and for low level programming, they play a role e.g. in saving power -- high level programmers often don't know what interrupts are, to those interrupts can be likened to "event [callbacks](callback.md)". An interrupt happens on some kind of even, for example when a key is pressed, when timer ticks, when error occurred etc. (An interrupt can also be raised by the CPU itself, this is how operating system [syscalls](syscall.md) are often implemented). What kinds of interrupts there are depends on each CPU architecture (consult your datasheet) and one can usually configure which interrupts to enable and which "callbacks" to use for them -- this is often done through so called **[vector](vector.md) table**, a special area in memory that records addresses ("vectors") of routines (functions/subprograms) to be called on specified interrupts. When interrupt happens, the current program execution is paused and the CPU automatically jumps to the subroutine for handling the interrupt -- after returning from the subroutine the main program execution continues. Interrupts are contrasted with **[polling](polling.md)**, i.e. manually checking some state and handling things as part of the main program, e.g. executing an infinite loop in which we repeatedly check keyboard state until some key is pressed. However polling is inefficient, it wastes power by constantly performing computation just by waiting -- interrupts on the other hand are a hard wired functionality that just performs a task when it happens without any overhead of polling. Furthermore interrupts can make programming easier (you save many condition checks and memory reads) and mainly **interrupts allow CPU to go into sleep mode** and so save a lot of power. When a CPU doesn't have any computation to do, it can stop itself and go into waiting state, not executing any instructions -- however interrupts still work and when something happens, the CPU jumps back in to work. This is typically what the `sleep`/`wait` function in your programming language does -- it puts the CPU to sleep and sets a timer interrupt to wake up after given amount of time. As a programmer you should know that you should call this sleep/wait function in your main program loop to relieve the CPU -- if you don't, you will notice the **CPU utilization** (amount of time it is performing computations) will go to 100%, it will heat up, your computer starts spinning the fans and be noisy because you don't let it rest.
There are often several **modes** of operation in a CPU which is typically meant for operating systems -- there will usually be some kind of privileged mode in which the CPU can do whatever it wants (this is the mode for the OS kernel) and a restricted mode in which there are restrictions, e.g. on which areas of memory can be accessed or which instructions can be used (this will be used for user program). Thanks to this a user program won't be able to crash the operating system, it will at worst crash itself.
There are often several **modes** of operation in a CPU which is typically meant for operating systems -- there will usually be some kind of privileged mode in which the CPU can do whatever it wants (this is the mode for the OS kernel) and a restricted mode in which there are restrictions, e.g. on which areas of memory can be accessed or which instructions can be used (this will be used for user program). Thanks to this a user program won't be able to crash the operating system, it will at worst crash itself. See also *real mode* and *protected mode*.
A CPU may also have integrated some **[coprocessors](coprocessor.md)**, though sometimes coprocessors are really a separate chip. Coprocessors that may be inside the CPU include e.g. the FPU ([floating point](float.md) unit) or encryption coprocessor. Again, this will make the CPU a lot more expensive.
TODOOOOOOO: ALU, virtual memory, ...
TODOOOOOOO: ALU, virtual memory, IP cores, architectures (register, ...), ...
## Notable CPUs
UNDER CONSTRUCTION
Here are listed some notable CPUs (or sometimes CPU families or cores).
{ I'm not so great with HW, suggest me improvements for this section please, thanks <3 ~drummyfish }
TODO: add more, mark CPUs with ME, add features like MMX, FPU, ...
| CPU |year |bits (/a)| ISA |~tr. c.|tr. size | freq. | pins |cores| other | notes |
| ----------------------------- | --- | ------- | -------------- | ----- | ------- | ------ | ---- | --- | ------------------- | --------------------------------------- |
| Intel 4004 |1971 | 4 / 12 | own | 2.3 K | 10 um | 75O K | 16 | 1 | | 1st commercial microproc. |
| Intel 8008 |1972 | 8 / 14 | own | 3.5 K | 10 um | 800 K | 18 | 1 | | |
| Intel 8080 |1974 | 8 / 16 | own | 6 K | 6 um | 3 M | 40 | 1 | | |
| AMD Am9080 |1975 | 8 / 16 | own | 6 K | 6 um | 4 M | 40 | 1 | | reverse-eng. clone of i8080 |
| MOS Technology 6502 |1975 | 8 / 16 | own | 3.5 K | 8 um | 3 M | 40 | 1 | | popular, cheap, Atari 2600, C64, ... |
| Zilog Z80 |1976 | 8 / 16 | own | 8.5 K | 4 um | 10 M | 40 | 1 | | popular |
| Intel 8086 |1978 | 16 / 20 | x86 (x86-16) | 29 K | 3 um | 10 M | 40 | 1 | | started x86 ISA |
| Motorola 68000 |1979 | 32 / 24 | own (CISC) | 68 K | | | 64 | 1 | | popular, e.g. Amiga, Mega Drive, ... |
| Intel (80)286 |1982 | 16 / 24 | x86 (x86-16) | 130 K | 1.5 um | 25 M | 68 | 1 | | |
| Intel (80)386 |1985 | 32 | x86 (IA-32) | 275 K | 1 um | 40 M | 132 | 1 | | |
| Intel (80)486 |1989 | 32 | x86 (IA-32) | 1.6 M | 600 nm | 100 M | 196 | 1 | 16 K cache | |
| AMD Am386 |1991 | 32 | x86 (IA-32) | 275 K | 800 nm | 40 M | 132 | 1 | | clone of i386, lawsuit |
| Intel Pentium P5 |1993 | 32 | x86 (IA-32) | 3 M | 800 nm | 60 M | 273 | 1 | 16 K cache | starts Pentium line with many to follow |
| AMD K5 |1996 | 32 | x86 (IA-32) | 4.3 M | 500 nm | 133 M | 296 | 1 | 24 K cache |1st in-house AMD CPU, compet. of Pentium |
| Intel Pentium II |1997 | 32 | x86 (IA-32) | 7 M | 180 nm | 450 M | 240 | 1 | 512 K L2 cache, MMX | |
| ARM7TDMI |1994 | 32 | ARM | | | 100 M | | 1 | | ARM core, e.g. GBA, PS2, Nokia 6110 ... |
| AMD Athlon 1000 Thunderbird |2000 | 32 | x86 (IA-32) | 37 M | 180 nm | 1 G | 453 | 1 | ~300 K cache | 1st 1GHz+ CPU |
| RAD750 |2001 | 32 | PowerPC | 10 M | 150 nm | 200 M | 360 | 1 | 64 K cache | radiation hard., space (Curiosity, ...) |
| AMD Opteron |2003 | 64 | x86 (x86-64) | 105 M | 130 nm | 1.6 G | 940 | 1 | ~1 M cache | 1st 64 bit x86 CPU |
| Intel Pentium D 820 |2005 | 64 | x86 (x86-64) | 230 M | 90 nm | 2.8 G | 775 | 2 | ~2 M cache | 1st desktop multi core CPU |
| Intel Core i5-2500K |2011 | 64 | x86 (x86-64) | 1 B | 32 nm | 3.3 G | | 4 | ~6 M cache | |
| PicoRV32 |2015?| 32 |RISC-V (RV32IMC)| | | ~700 M | | | | simple, free hardware RISV-V core |
| Apple A9 |2015 | 64 | ARM (ARMv8) | 2 B | 14 nm | 1.8 G | | 2 | ~7 M cache | iPhones |
|AMD Ryzen Threadrip. PRO 5995WX|2022 | 64 | x86 (x86-64) | 33 B | 7 nm | 4.5 G | 4094 | 64 | ~300 M cache, ME | high end bloat |

@ -22,4 +22,8 @@ In 2019 drummyfish has written a "manifesto" of his ideas called **Non-Competiti
He likes many things such as animals, peace, freedom, programming, [math](math.md) and [games](game.md) (used to play [Xonotic](xonotic.md) and [OpenArena](openarena.md), even though he despises [competitive](competition.md) behavior in real life). He plays piano and drums a little bit and tries to pick up new things like [chess](chess.md) or language learning.
**Does drummyfish have [divine intellect](terry_davis.md)?** Hell no, but thanks to his extreme tendency for isolation, great curiosity and obsession with truth he is possibly the only man on Earth completely immune to propaganda, he can see the world as it is, not as it is presented, so he feels it is his moral duty to share what he is seeing. He is able to overcome his natural dumbness by tryharding and sacrificing his social and sexual life so that he can program more. If drummyfish can learn to program [LRS](lrs.md), so can you.
**Does drummyfish have [divine intellect](terry_davis.md)?** Hell no, but thanks to his extreme tendency for isolation, great curiosity and obsession with truth he is possibly the only man on Earth completely immune to propaganda, he can see the world as it is, not as it is presented, so he feels it is his moral duty to share what he is seeing. He is able to overcome his natural dumbness by tryharding and sacrificing his social and sexual life so that he can program more. If drummyfish can learn to program [LRS](lrs.md), so can you.
## See Also
- [autism](autism.md)

@ -1,6 +1,6 @@
# Fascism
Fascist groups are subgroups of society that strongly pursue [self interest](self_interest.md) on the detriment of others (those who are not part of said group). Fascism is a [rightist](left_right.md), [competitive](competition.md) tendency, very much connected to [identity politics](identity_politics.md) (being or rather feeling to be part of some group, e.g. nation, sex, [race](race.md) etc.); fascists aim to make themselves as strong, as powerful and as rich as possible, i.e. to weaken and possibly eliminate competing groups, to have power over them, enslave them and to seize their resources. The means of their operation are almost exclusively [evil](evil.md), including [violence](violence.md), [bullying](bully.md), [wars](war.md), [propaganda](propaganda.md), [eye for an eye](revenge.md), [slavery](slavery.md) etc.
Fascist (from Latin *fasces*, "bundle") groups are subgroups of society that strongly pursue [self interest](self_interest.md) on the detriment of others (those who are not part of said group). Fascism is a [rightist](left_right.md), [competitive](competition.md) tendency, very much connected to [identity politics](identity_politics.md) (being or rather feeling to be part of some group, e.g. nation, sex, [race](race.md) etc.); fascists aim to make themselves as strong, as powerful and as rich as possible, i.e. to weaken and possibly eliminate competing groups, to have power over them, enslave them and to seize their resources. The means of their operation are almost exclusively [evil](evil.md), including [violence](violence.md), [bullying](bully.md), [wars](war.md), [propaganda](propaganda.md), [eye for an eye](revenge.md), [slavery](slavery.md) etc.
A few examples of fascist groups are [corporations](corporation.md), [nations](nationalism.md), NSDAP ([Nazis](nazi.md)), [LGBT](lgbt.md), [feminists](feminism.md), [Antifa](antifa.md), [KKK](kkk.md), [Marxists](marxism.md) and, of course, the infamous Italian fascist party of Benito Mussolini. Some famous fascists include Alexander the Great, [Napoleon](napoleon.md), [Churchill](churchill.md), [Julius Caesar](caesar.md), [Hitler](hitler.md), Mussolini, [Stalin](stalin.md), Henry Ford, [Steve Jobs](steve_jobs.md) and all [American](usa.md) presidents (basically any so called "great leader" can be included).

@ -1,6 +1,6 @@
# Floating Point
In programming floating point (colloquially just *float*) is a way of representing [fractional](rational_number.md) numbers (such as 5.13) and approximating [real numbers](real_number.md) (i.e. numbers with higher than [integer](integer.md) precision), which is a bit more complex than simpler methods for doing so (such as [fixed point](fixed_point.md)). The core idea of it is to use a radix ("decimal") point that's not fixed but can move around so as to allow representation of both very small and very big values. Nowadays floating point is the standard way of [approximating](approximation.md) [real numbers](real_number.md) in computers (floating point types are called *real* in some programming languages, even though they represent only [rational numbers](rational_number.md), floats can't e.g. represent [pi](pi.md) exactly), basically all of the popular [programming languages](programming_language.md) have a floating point [data type](data_type.md) that adheres to the IEEE 754 standard, all personal computers also have the floating point hardware unit (FPU) and so it is widely used in all [modern](modern.md) programs. However most of the time a simpler representation of fractional numbers, such as the mentioned [fixed point](fixed_point.md), suffices, and weaker computers (e.g. [embedded](embedded.md)) may lack the hardware support so floating point operations are emulated in software and therefore slow -- remember, float rhymes with [bloat](bloat.md). Prefer fixed point.
In programming floating point (colloquially just *float*) is a way of representing [fractional](rational_number.md) numbers (such as 5.13) and approximating [real numbers](real_number.md) (i.e. numbers with higher than [integer](integer.md) precision), which is a bit more complex than simpler methods for doing so (such as [fixed point](fixed_point.md)). The core idea of it is to use a radix ("decimal") point that's not fixed but can move around so as to allow representation of both very small and very big values. Nowadays floating point is the standard way of [approximating](approximation.md) [real numbers](real_number.md) in computers (floating point types are called *real* in some programming languages, even though they represent only [rational numbers](rational_number.md), floats can't e.g. represent [pi](pi.md) exactly), basically all of the popular [programming languages](programming_language.md) have a floating point [data type](data_type.md) that adheres to the IEEE 754 standard, all personal computers also have the floating point hardware unit ([FPU](fpu.md)) and so it is widely used in all [modern](modern.md) programs. However most of the time a simpler representation of fractional numbers, such as the mentioned [fixed point](fixed_point.md), suffices, and weaker computers (e.g. [embedded](embedded.md)) may lack the hardware support so floating point operations are emulated in software and therefore slow -- remember, float rhymes with [bloat](bloat.md). Prefer fixed point.
**Floating point is tricky**, it works most of the time but a danger lies in programmers relying on this kind of [magic](magic.md) too much, some new generation programmers may not even be very aware of how float works. Even though the principle is not so hard, the emergent complexity of the math is really complex. One floating point expression may evaluate differently on different systems, e.g. due to different rounding settings. One possible pitfall is working with big and small numbers at the same time -- due to differing precision at different scales small values simply get lost when mixed with big numbers and sometimes this has to be worked around with tricks (see e.g. [this](http://the-witness.net/news/2022/02/a-shader-trick/) devlog of The Witness where a float time variable sent into [shader](shader.md) is periodically reset so as to not grow too large and cause the mentioned issue). Another famous trickiness of float is that you shouldn't really be comparing them for equality with a normal `==` operator as small rounding errors may make even mathematically equal expressions unequal (i.e. you should use some range comparison instead).

@ -1,6 +1,6 @@
# Forth
Forth ("fourth generation" shortened to four characters due to technical limitations) is a very good [minimalist](minimalism.md) [stack](stack.md)-based untyped [programming language](programming_language.md) that uses [postfix](notation.md) (reverse Polish) notation. Its vanilla form is yet much simpler than [C](c.md), it's very [elegant](elegant.md) and its compiler/interpreter can be made very easily, giving it high practical freedom (i.e. not being practically controlled by any central organization); it is used e.g. in space technology and [embedded](embedded.md) systems as a way to write efficient [low level](low_level.md) programs that are, unlike those written in [assembly](assembly.md), [portable](portability.md) (fun fact: there even exist computers directly running Forth in hardware). Forth was the main influence for [Comun](comun.md), the [LRS](lrs.md) programming language, it is also used by [Collapse OS](collapseos.md) and [Dusk OS](duskos.md) as the main language. In its minimalism Forth competes a bit with [Lisp](lisp.md).
Forth ("fourth generation" shortened to four characters due to technical limitations) is a very good [minimalist](minimalism.md) [stack](stack.md)-based untyped [programming language](programming_language.md) that uses [postfix](notation.md) (reverse Polish) notation. Its vanilla form is yet much simpler than [C](c.md), it's very [elegant](elegant.md) and its compiler/interpreter can be made very easily, giving it high practical freedom (i.e. not being practically controlled by any central organization); it is used e.g. in space technology (e.g. [RTX2010](rtx2010.md), a radiation hardened space computer directly executing Forth) and [embedded](embedded.md) systems as a way to write efficient [low level](low_level.md) programs that are, unlike those written in [assembly](assembly.md), [portable](portability.md) (fun fact: there even exist computers directly running Forth in hardware). Forth was the main influence for [Comun](comun.md), the [LRS](lrs.md) programming language, it is also used by [Collapse OS](collapseos.md) and [Dusk OS](duskos.md) as the main language. In its minimalism Forth competes a bit with [Lisp](lisp.md).
{ It's kinda like usable [brainfuck](brainfuck.md). Also there used to be a nice Forth wiki at wiki.forthfreak.net, now it has to be accessed via archive as it's dead. ~drummyfish }

@ -6,4 +6,6 @@ Hero culture is a [harmful](harmful.md) culture of creating and worshiping heroe
Smart people know this and those being named *heroes* themselves many times protest it, e.g. Marie Curie has famously stated: "be less curious about people and more curious about ideas." Anarchists purposefully don't name theories after their inventors but rather by their principles, knowing the danger of hero culture leading to social hierarchy and also that people are imperfect -- people are like packages, a mixture of both good and bad inadvertently inseparable, they carry distorting associations, they make mistakes and their images are twisted by history and politics -- even the character of [Jesus](jesus.md), a "theoretically perfect human", has been many times twisted in ways that are hard to believe. Worshiping an individual always comes with the tendency to embrace and support everything he does, all his opinions and actions, including the extremely bad ones. Abusive regimes are the ones who use heroes and their names for propaganda -- Stalinism, Leninism, corporations such as Ford, named after their founder etc. Heroes become brands whose stamp of approval is used to push bad ideas... especially popular are heroes who are already dead and can't protest their image being abused -- see for example how [Einstein's](einstein.md) image has been raped by [capitalists](capitalism.md) for their own propaganda, e.g. by [Apple](apple.md)'s [marketing](marketing.md), while in fact Einstein was a pacifist socialist highly critical of capitalism. This is not to say an idea's name cannot be abused, the word *[communism](communism.md)* has for example become something akin a swear word after being abused by regimes that had little to do with real communism. Nevertheless it is still much better to focus on ideas as ideas always carry their own principle embedded within them, visible to anyone willing to look, and can be separated from other ideas very easily. Focusing on ideas allows us to discuss them critically, it allows us to reject a bad concept without "attacking" the human who came up with it.
Mainstream [US](usa.md) mentality of strong hero culture is now infecting the whole world and reaches unbelievably retarded levels, which is further not helped by shit like the stupid superhero movies. Besides calling murderers (soldiers) heroes, it is now for example standard to call handicapped people heroes, literally only because they are handicapped and it makes them feel better, even if they do nothing special and even if they actually live more comfortable lives than poor healthy peasants who have to live miserably and slave at work every day without getting anyone's attention. Or -- and this is yet another level of stupidity -- **anyone who just happens to not behave like a dick in case of some emergency is guaranteed to be called a hero**; for example if someone by chance walks by a baby that is drowning in a pool and saves the baby from dying will with 100% probability be called a hero in the media. But WHY the fuck would that be? Is the guy a hero because he didn't just sit down a watch the baby drown? It is the absolutely normal behavior to save a drowning baby if one sees it, especially when there is very little risk of own life in doing so (such as just jumping into the pool); calling someone a hero for doing so is like calling a gun owner a hero for not going to the streets to randomly shoot at people. So in this fucked up society the title of *hero* is basically won like a lottery -- you just have to be lucky enough to be present at some emergency and then just do the normal thing.
Mainstream [US](usa.md) mentality of strong hero culture is now infecting the whole world and reaches unbelievably retarded levels, which is further not helped by shit like the stupid superhero movies. Besides calling murderers (soldiers) heroes, it is now for example standard to call handicapped people heroes, literally only because they are handicapped and it makes them feel better, even if they do nothing special and even if they actually live more comfortable lives than poor healthy peasants who have to live miserably and slave at work every day without getting anyone's attention. Or -- and this is yet another level of stupidity -- **anyone who just happens to not behave like a dick in case of some emergency is guaranteed to be called a hero**; for example if someone by chance walks by a baby that is drowning in a pool and saves the baby from dying will with 100% probability be called a hero in the media. But WHY the fuck would that be? Is the guy a hero because he didn't just sit down a watch the baby drown? It is the absolutely normal behavior to save a drowning baby if one sees it, especially when there is very little risk of own life in doing so (such as just jumping into the pool); calling someone a hero for doing so is like calling a gun owner a hero for not going to the streets to randomly shoot at people. So in this fucked up society the title of *hero* is basically won like a lottery -- you just have to be lucky enough to be present at some emergency and then just do the normal thing.
On a bit more lighthearted note: in Internet [meme](meme.md) slang "an hero" stands for committing [suicide](suicide.md).

@ -4,6 +4,8 @@ Here you can shitpost your jokes that are somehow related to this wiki's topic.
Please do NOT post lame "big-bang-theory"/[9gag](9gag.md) jokes like *sudo make sandwich* or *there are 10 types of people*.
Also remember the worst thing you can do to a joke is put a [disclaimer](disclaimer.md) on it. Never fucking do that.
{ Many of the jokes are original, some are shamelessly pulled from other sites and reworded. I don't believe [copyright](copyright.md) can apply if the expression of a joke is different, ideas can't be copyrighted. Also the exact origins of jokes are difficult to track so it's probably a kind of folklore. ~drummyfish }
{ I would like to thank one anonymous friend who contributed to me many ideas for jokes here :D I usually modified them slightly. ~drummyfish }

@ -0,0 +1,5 @@
# Liberalism
*Not to be confused with [libertarianism](libertarianism.md).*
Liberalism is a political ideology whose definition is not greatly clear (we may find branches that differ a lot) but which usually aims for "liberty", focus on individuals who ought to be protected by the state and have equal opportunities, which leads to obsession with all kinds of "[rights](rights_culture.md)" and "social justice" (i.e. social revenge of minorities); as one of worst imaginable ideologies it is no surprise it's the prevailing [US](usa.md) ideology and ideology of [SJW](sjw.md)s -- liberalism is taking over the whole western world and it's destroying everything. It basically tries to take the worst of all other ideologies: liberalism supports things such as [state](state.md) and strong laws (to "protect" people), [capitalism](capitalism.md) (to give them "opportunities"), [censorship](censorship.md), [political correctness](political_correctness.md) and violence; supporting concepts connected to both [right and (pseudo)left](left_right.md), it is said to be a "centrist" stance, however [we](lrs.md) just call it confused -- they just try to combine absolutely incompatible things, they want a competitive environment in which "everyone wins". Liberalism is highly [harmful](harmful.md), retarded and should never be supported.

@ -0,0 +1,5 @@
# Libertarianism
*Not to be confused with [liberalism](liberalism.md).*
TODO: retarded capitalist shit basically

@ -76,6 +76,7 @@ There are many terms that are very similar and can many times be used interchang
- **[kB/mB/gB/tB](memory_units.md)** vs **[KiB/MiB/GiB/TiB](memory_units.md)**
- **[latency/ping/lag](latency.md)** vs **[throughput/bandwidth](throughput.md)**
- **[leftism](left_right.md)** vs **[pseudoleftism](pseudoleft.md)**
- **[liberalism](liberalism.md)** vs **[libertarianism](libertarianism.md)**
- **[license](license.md)** vs **[waiver](waiver.md)**
- **[mass](mass.md)** vs **[weight](weight.md)**
- **[method](method.md)** vs **[methodology](methodology.md)**

@ -41,7 +41,7 @@ Here is a list of people notable in technology or in other ways related to [LRS]
- **[Ted Kaczynski](ted_kaczynski.md)**: AKA the Unabomber, mathematician, primitivist and murderer who pointed out the dangers of modern technology
- **[Terry Davis](terry_davis.md)**: deceased schizophrenic genius, creator of [Temple OS](temple_os.md), became a tech [meme](meme.md)
- **[Tom Murphy VII (Tom7)](tom7.md)**: researcher, famous [SIGBOVIK](sigbovik.md) contributor and YouTuber
- **[Uriel](uriel.md)**: deceased member of the [suckless](suckless.md) community, philosophical advisor
- **[Uriel M. Pereira](uriel.md)**: deceased member of the [suckless](suckless.md)/[cat-v](cat_v.md) community, philosophical advisor
- **[Virgil Dupras](dupras.md)**: creator of [Collapse OS](collapseos.md) and [Dusk OS](duskos.md)
- **[viznut](viznut.md)** (Ville-Matias Heikkilä): creator or [countercomplex](countercomplex.md), minimalist programmer, inventor of [bytebeat](bytebeat.md), hacker, [collapse](collapse.md) "[prepper](prepping.md)"
- ...

@ -2,7 +2,7 @@
*"As passwords first appeared at the MIT AI Lab I decided to follow my belief that there should be no passwords... I don't believe it's desirable to have security on a computer."* -- [Richard Stallman](rms.md) (from the book *Free As In Freedom*)
Computer security (also cybersecurity) is a [bullshit](bullshit.md) field of study of designing computer systems so as to make them hard to ["attack"](fight_culture.md) (which usually means accessing "sensitive" information, manipulating it or destabilizing the system itself). At the dawn of computer era security wasn't such a big deal as society wasn't yet so fucked up and didn't depend on computers so much, the damage one could cause by exploiting computers was limited, however once consumer technology became forced by [capitalism](capitalism.md) and put into EVERYTHING -- companies, governments, streets, homes, clothes, even human bodies and things that can work better without such technology (see e.g. [Internet of stinks](iot.md)) -- [privacy](privacy.md) became another bullshit issue of society as cracking now theoretically allows not only killing individuals but wiping whole countries off the map. Recently security has really become a lot about ensuring digital "[privacy](privacy.md)", it is causing a great deal of hysteria.
Computer security (also cybersecurity) is a [bullshit](bullshit.md) field of study of designing computer systems so as to make them hard to ["attack"](fight_culture.md) (which usually means accessing "sensitive" information, manipulating it or destabilizing the system itself). At the dawn of computer era security wasn't such a big deal as society wasn't yet so fucked up and didn't depend on computers so much, the damage one could cause by exploiting computers was limited, however once consumer technology became forced by [capitalism](capitalism.md) and put into EVERYTHING -- companies, governments, streets, homes, clothes, even human bodies and things that can work better without such technology (see e.g. [Internet of stinks](iot.md)) -- [privacy](privacy.md) became another bullshit issue of society as cracking now theoretically allows not only killing individuals but wiping whole countries off the map. Recently security has really become a lot about ensuring digital "[privacy](privacy.md)", it is causing a great deal of hysteria. Everyone is obsessed with security nowadays and most of security business is just security theater.
**If you want security, the most basic thing to do is to disconnect from the [Internet](internet.md).** Just never use it. If you are really serious, you HAVE TO stop using widely used human languages such as [English](english.md), you simply have to **learn an obscure language** of some jungle tribe that no one else knows and use that exclusively for your encrypted messages (like they did with the [Navajo](navajo.md) language during WWII). All in all for maximum security it's best if you never do anything at all, just lie in bed and be safe.

@ -1,6 +1,6 @@
# Suckless
Suckless, software that [sucks](suck.md) less, is a type of [free](free_software.md) [software](software.md), as well as an organization (http://suckless.org/), that tries to adhere to a high technological [minimalism](minimalism.md), [freedom](freedom.md) and [hackability](hacking.md), and opposes so called [bloat](bloat.md) and unnecessary complexity which has been creeping into most "[modern](modern.md)" software and by which technology has started to become less useful and more burdening. It is related to [Unix philosophy](unix_philosophy.md) and [KISS](kiss.md) but brings some new ideas onto the table. New movements now came to existence from suckless, e.g. [Bitreich](bitreich.md) and our own [less retarded software](lrs.md).
Suckless, software that [sucks](suck.md) less, is a type of [free](free_software.md) [software](software.md), as well as an organization (http://suckless.org/), that tries to adhere to a high technological [minimalism](minimalism.md), [freedom](freedom.md) and [hackability](hacking.md), and opposes so called [bloat](bloat.md) and unnecessary complexity which has been creeping into most "[modern](modern.md)" software and by which technology has started to become less useful and more burdening. It is related to [Unix philosophy](unix_philosophy.md) and [KISS](kiss.md) but brings some new ideas onto the table. New movements now came to existence from suckless, e.g. [Bitreich](bitreich.md) and our own [less retarded software](lrs.md). Suckless seems quite related to [cat-v](cat_v.md).
The community is relatively a small niche but has also seen a growth in popularity sometime in 2010s, thanks to tech youtubers such as [Luke Smith](luke_smith.md), [Distro Tube](distro_tube.md) and [Mental Outlaw](mental_outlaw.md). It has also gained traction on [4chan](4chan.md)'s technology board. While consisting a lot of expert programmers and [hackers](hacker.md) mostly interested in systems like [GNU](gnu.md)/[Linux](linux.md), [BSDs](bsd.md) and [Plan 9](plan9.md), a lot of less skilled "[Linux](linux.md)" users and even complete non-programmers have started to use suckless to various degrees -- [dwm](dwm.md) has for example seen a great success among "Unix porn" lovers and chronic [ricers](ricing.md). While some members are hardcore minimalists and apply their principles to everything, some just cherry pick programs they find nice and integrate them in their otherwise bloated systems.
@ -47,4 +47,5 @@ However there are many more ([IRC](irc.md) clients, file formats, presentation s
- [less retarded software](lrs.md)
- [reactionary software](reactionary_software.md)
- [bitreich](bitreich.md)
- [bitreich](bitreich.md)
- [cat-v](cat_v.md)

@ -202,4 +202,5 @@ Turing machines can be used to define computable [formal languages](formal_langu
## See Also
- [brainfuck](brainfuck.md)
- [busy beaver](busy_beaver.md)
- [busy beaver](busy_beaver.md)
- [counter machine](counter_machine.md)

File diff suppressed because one or more lines are too long

@ -2,9 +2,9 @@
This is an autogenerated article holding stats about this wiki.
- number of articles: 542
- number of commits: 674
- total size of all texts in bytes: 2820110
- number of articles: 545
- number of commits: 675
- total size of all texts in bytes: 2832550
longest articles:
@ -24,6 +24,10 @@ longest articles:
latest changes:
```
Date: Wed Jan 31 00:35:22 2024 +0100
trolling.md
wiki_pages.md
wiki_stats.md
Date: Tue Jan 30 22:35:23 2024 +0100
cpu.md
wiki_pages.md
@ -34,17 +38,14 @@ wiki_pages.md
wiki_stats.md
Date: Tue Jan 30 09:10:10 2024 +0100
Date: Tue Jan 30 07:54:47 2024 +0100
wiki_pages.md
wiki_stats.md
Date: Tue Jan 30 00:32:40 2024 +0100
```
most wanted pages:
```
embedded.md
array.md
meme.md
embedded.md
data_type.md
buddhism.md
quake.md

Loading…
Cancel
Save