master
Miloslav Ciz 9 months ago
parent 486c142b76
commit 9f32c8079a

@ -4,7 +4,7 @@ Approximating means calculating or representing something with lesser than best
Using approximations however doesn't have to imply decrease in precision of the final result -- approximations very well serve [optimization](optimization.md). E.g. approximate metrics help in [heuristic](heuristic.md) algorithms such as [A*](a_star.md). Another use of approximations in optimization is as a quick preliminary check for the expensive precise algorithms: e.g. using bounding spheres helps speed up collision detection (if bounding spheres of two objects don't collide, we know they can't possibly collide and don't have to expensively check this).
Example of approximations:
Examples of approximations:
- **[Distances](distance.md)**: instead of expensive **Euclidean** distance (`sqrt(dx^2 + dy^2)`) we may use **Chebyshev** distance (`dx + dy`) or **Taxicab** distance (`max(dx,dy)`).
- **Engineering approximations** ("guesstimations"): e.g. **sin(x) = x** for "small" values of *x* or **pi = 3** (integer instead of float).
@ -14,4 +14,5 @@ Example of approximations:
- **[Ray tracing](ray_tracing.md)** neglects indirect lighting. Computer graphics in general is about approximating the solution of the rendering equation.
- **Real numbers** are practically always approximated with [floating point](floating_point.md) or [fixed point](fixed_point.md) (rational numbers).
- **[Numerical methods](numerical.md)** offer generality and typically yield approximate solutions while their precision vs speed can be adjusted via parameters such as number of iterations.
- **[Taylor series](taylor_series.md)** approximates given mathematical function and can be used to e.g. estimate solutions of [differential equations](differential_equation.md).
- **[Taylor series](taylor_series.md)** approximates given mathematical function and can be used to e.g. estimate solutions of [differential equations](differential_equation.md).
- ...

@ -41,6 +41,7 @@ As anything can be represented with numbers, binary can be used to store any kin
## See Also
- [unary](unary.md)
- [bit](bit.md)
- [hexadecimal](hexadeciaml.md)
- [De Morgan's laws](de_morgans_laws.md)

@ -0,0 +1,5 @@
# Distrohopping
Distrohopping is a serious mental disease that makes people waste lives on constantly switching [GNU](gnu.md)/[linux](linux.md) [distributions](distro.md) ("distros"). This affects mostly those of the lowest skill in tech who feel the need to LARP as wannabe tech nerds; as it's been said, an amateur is obsessed with tools, an expert is obsessed with mastery ([Richard Stallman](rms.md) has for example famously never installed GNU/Linux himself as he has better things to do) -- a true programmer will just settle with a comfy [Unix](unix.md) environment that can run [vim](vim.md) and dedicate his time to creating a timeless source code while the hopper, like a mere animal, is just busy masturbating to a new bastard child of Ubuntu and Arch Linux that adds a new wallpaper and support for [vertical mice](vertical_mouse.md) -- such an activity is basically as retarded as mainstream tech [consumerism](consumerism.md) with the only difference being a hopper isn't limited by finance so he can just distrohop 24/7 and hop himself to death.
TODO: cure? take the bsd pill? :-)

@ -8,12 +8,12 @@ Partially thanks to the free release of the engine and its relatively [suckless]
The Doom engine was revolutionary and advanced (not only but especially) video game graphics by a great leap, considering its predecessor [Wolf3D](wolf3D.md) was really primitive in comparison (Doom basically set the direction for future trends in games such as driving the development of more and more powerful [GPUs](gpu.md) in a race for more and more impressive visuals). Doom used a technique called **[BSP rendering](bsp.md)** that was able to render [realtime](realtime.md) 3D views of textured environments with distance fog and enemies and items represented by 2D [billboards](billboard.md) ("sprites"). No [GPU](gpu.md) acceleration was used, graphics was rendered purely with [CPU](cpu.md) (so called [software rendering](sw_rendering.md), GPU rendering would come with Doom's successor [Quake](quake.md)). This had its limitations, for example the camera could not tilt up and down and the levels could not have rooms above other rooms. For this reason some call Doom "[pseudo 3D](pseudo3d.md)" or 2.5D rather than "true 3D". Nevertheless, though with limitations, Doom did present 3D views and internally it did work with 3D coordinates (for example the player or projectiles have 2D position plus height coordinate), despite some dumb YouTube videos saying otherwise. For this reason we prefer to call Doom a **primitive 3D** engine, but 3D nonetheless. However Doom was not just a game with good graphics, it had extremely good gameplay, legendary music and art style and introduced the revolutionary [deathmatch](deathmatch.md) multiplayer, as well as a HUGE modding and mapping community. It was a success in every way -- arguably no other game has since achieved a greater revolution than Doom.
However Doom's success wasn't just due to its graphics, it excelled overall in all areas -- it had brilliant fast and gory gameplay, amazing level design (by John Romero), excellent soundtrack and even a revolutionary [multiplayer](multiplayer.md). The game's backstory was simple and didn't stand in the way of gameplay, it's basically about a tough marine (so called *Doomguy*) on a Mars military base slaying hordes of demos from hell, all in a rock/metal style with a lot of gore and over-the-top violence (chain saws n stuff).
However Doom's success wasn't just due to its graphics, it excelled overall in all areas -- it had brilliant fast and gory gameplay, amazing level design (by John Romero), excellent soundtrack and even a revolutionary [multiplayer](multiplayer.md). The game's backstory was simple and didn't stand in the way of gameplay, it's basically about a tough marine (so called *Doomguy*) on a Mars military base slaying hordes of demons from hell, all in a rock/metal style with a lot of gore and over-the-top violence (chain saws n stuff).
Doom source code is written in [C89](c.md) and is about 36000 [lines of code](loc.md) long. The original system requirements needed roughly a 30 MHz [CPU](cpu.md) and 4 MB [RAM](ram.md) as a minimum. It had 27 levels (9 of which were shareware), 8 weapons and 10 enemy types.
The game only used [fixed point](fixed_point.md), no [float](float.md)!
Doom also has a [deterministic](determinism.md) [FPS](fps.md)-independent physics which allows for efficient recording of demos of its gameplay and creating [tool assisted speedruns](tas.md), i.e. the time step of game simulation is fixed (35 tics per second). Such demos can be played back in high quality while being minuscule in size and help us in many other ways, for example for verifying validity of [speedruns](speedrun.md). This is very nice and serves as an example of a well written engine (unlike later engines from the same creators, e.g. those of [Quake](quake.md) games which lacked this feature).
Doom also has a [deterministic](determinism.md) [FPS](fps.md)-independent physics which allows for efficient recording of [demos](demo.md) of its gameplay and creating [tool assisted speedruns](tas.md), i.e. the time step of game simulation is fixed (35 tics per second). Such demos can be played back in high quality while being minuscule in size and help us in many other ways, for example for verifying validity of [speedruns](speedrun.md). This is very nice and serves as an example of a well written engine (unlike later engines from the same creators, e.g. those of [Quake](quake.md) games which lacked this feature).
LOL someone created a Doom system monitor for [Unix](unix.md) systems called [psDooM](psdoom.md) where the monsters in game are the operating system [processes](process.md) and killing the monsters kills the processes.

@ -38,4 +38,15 @@ X v v v v v v v v v v v
--....-----""""----"""" "" "-..__ __......--""""""" """ .;_.....
"""" : ANTARCTICA
X ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ X
```
```
Some numbers about the planet Earth:
- age: 4.54 billion years
- distance from the [Sun](sun.md) (nearest, furthest): 147098450 km, 152097597 km,
- radius (equator, poles): 6378 km, 6356 km
- mass: 5.9 * 10^24 kg
- acceleration by gravity: 9.8 m/s^2
- axial tilt: 23.4 degrees
- length of year: 365.25 days
- land vs water area: 148940000 km^2, 361132000 km^2

@ -22,11 +22,12 @@ The following is a list of hardware whose design is **at least to some degree**
The following is a list of some "freedom friendly" hardware, i.e. hardware that though partly or fully proprietary is not or can be made non-malicious to the user (has documented behavior, allows fully free software, battery replacement, repairs etc.):
- **[Ben NanoNote](ben_nanonote.md)**: tiny [GNU](gnu.md)/[Linux](linux.md) laptop whose design is free, however it utilizes e.g. a proprietary CPU.
- **[DragonBox Pyra](pyra.md)**: Upcoming small handheld computer running [GNU](gnu.md)/[Linux](linux.md) that *almost* meets the RYF criteria, schematics will be available, GPU drivers are sadly proprietary.
- **[DragonBox Pyra](pyra.md)**: Upcoming small handheld computer running [GNU](gnu.md)/[Linux](linux.md) that *almost* meets the RYF criteria, schematics will be available, GPU drivers are sadly proprietary. Successor to OpenPandora.
- **[Librem 5](librem5.md)**: WARNING, this device has been criticized a lot. It's an "open"/privacy-friendly smartphone with free-licensed design running [GNU](gnu.md)/[Linux](linux.md), however it uses proprietary firmware (loaded from secondary CPU to sneakily comply with RYF) and the functionality is, according to reviews, horrible.
- **[MNT Reform](mnt_reform.md)**: "Open hardware" (free-licensed design but using proprietary components) laptop with [NXP](nxp.md) [ARM](arm.md) CPU and [Vivante](vivante.md) GPU that can run with free drivers, has no camera or microphone. Pretty expensive.
- **Old [Thinkpad](thinkpad.md) laptops**: Old thinkpads such as [X200](x200.md), [T400](t400.md) and [T500](t500.md) are construction-wise superior to maybe any other laptop ever made, however despite being proprietary they are compatible with [libreboot](libreboot.md) and can be purchased with [Intel ME](intel_me.md) CPU backdoor disabled, offering complete control over the device, plus they can be bought relatively cheap. Very popular.
- **[OLinuXino](olinuxino.md)**: TODO
- **[OpenPandora](openpandora.md)**: Game console/tiny computer.
- **[Open consoles](open_console.md)** such as [Arduboy](arduboy.md), [Pokitto](pokitto.md) and [Gamebuino](gamebuino.md) usually utilize a lot of simple free hardware such as [Arduino](arduino.md), provide schematics, free libraries and encourage hacking.
- **Other proprietary laptops**: many mostly older laptops are freedom friendly, e.g. Asus C201 Chromebook. You can usually find these in the libreboot compatibility list.
- **[Pinephone](pinephone.md)**: Another "free/open" smartphone running GNU/Linux, probably better than Librem5, also uses some proprietary firmware (e.g. for Wifi), design is only source-available.

@ -1,3 +1,3 @@
# Geek
Geek is a wannabe [nerd](nerd.md), it's someone who wants to identify with being smart rather than actually being smart. Geeks are basically what used to be called a *smartass* in the old days -- overly confident conformists occupying [mount stupid](mount_stupid.md) who think [soyence](soyence.md) is actual science, they watch shows like Rick and Morty and Big Bang Theory, they browse [Rational Wiki](rational_wiki.md) and [reddit](reddit.md) -- especially [r/atheism](atheism.md), and they make appearances on r/iamverysmart -- they wear T-shirts with cheap references to 101 programming concepts and uncontrollably laugh at any reference to number [42](42.md), they think they're computer experts because they know the word [Linux](linux.md), managed to install [Ubuntu](ubuntu.md) or drag and drop programmed a "game" in [Godot](godot.md). Geeks don't really have their own opinions, they just adopt opinions presented on [9gag](9gag.md), they are extremely weak and don't have extreme views. They usually live the normal conformist life, they have friends, normal day job, wife and kids, but they like to say they "never fit it" -- a true nerd is living in a basement and doesn't meet any people, he lives on the edge of [suicide](suicide.md) and doesn't nearly complain as much as the "geek".
Geek is a wannabe [nerd](nerd.md), it's someone who wants to identify with being smart rather than actually being smart. Geeks are basically what used to be called a *smartass* in the old days -- overly confident conformists occupying [mount stupid](mount_stupid.md) who think [soyence](soyence.md) is actual science, they watch shows like Rick and Morty and Big Bang Theory, they browse [Rational Wiki](rational_wiki.md) and [reddit](reddit.md) -- especially [r/atheism](atheism.md), and they make appearances on r/iamverysmart -- they wear T-shirts with cheap references to 101 programming concepts and uncontrollably laugh at any reference to number [42](42.md), they think they're computer experts because they know the word [Linux](linux.md), managed to install [Ubuntu](ubuntu.md) or drag and drop programmed a "game" in [Godot](godot.md). Geeks don't really have their own opinions, they just adopt opinions presented on [9gag](9gag.md), they are extremely weak and don't have extreme views. They usually live the normal conformist life, they have friends, normal day job, wife and kids, but they like to say they "never fit in" -- a true nerd is living in a basement and doesn't meet any real life people, he lives on the edge of [suicide](suicide.md) and doesn't nearly complain as much as the "geek".

@ -22,9 +22,12 @@ WORK IN PROGRESS
| [Microsoft](microsoft.md) | Microshit |
| [microtransaction](microtransaction.md) | microtheft |
| [modern](modern.md) | malicious, shitty |
| [network](network.md) | notwork |
| [Nintendo](nintendo.md) | Nintendont |
| [NVidia](nvidia.md) | NoVidya |
| object oriented programming ([OOP](oop.md))| object obsessed programming |
| object oriented | objectfuscated |
| [objective C](objective_c.md) | objectionable C |
| [openbsd](openbsd.md) | openbased |
| plug and play | plug and pray |
| "science" | [soyence](soyence.md) |
@ -32,6 +35,7 @@ WORK IN PROGRESS
| [systemd](systemd.md) | shitstemd, soystemd |
| user (of a proprietary system) | used, lusr |
| [wayland](wayland.md) | whyland |
| [world wide web](www.md) | world wide wait |
| [YouTube](youtube.md) | JewTube |
## See Also

@ -2,7 +2,7 @@
*"I invented the term 'object oriented' and [C++](cpp.md) was not what I had in mind"* --[Alan Kay](alan_kay.md), inventor of OOP
Object-oriented programming (OOP, also object-obsessed programming) is a [programming paradigm](paradigm.md) that tries to model reality as a collection of abstract objects that communicate with each other and obey some specific rules. While the idea itself isn't bad and can be useful in certain cases, **OOP has become extremely overused, extremely badly implemented and downright forced in programming languages** which apply this [abstraction](abstraction.md) to every single program and concept, creating [anti-patterns](anti_pattern.md), unnecessary issues and of course [bloat](bloat.md). We therefore see OOP as a **[cancer](cancer.md) of software development**.
Object-oriented programming (OOP, also object-obsessed programming and objectfuscated programming) is a [programming paradigm](paradigm.md) that tries to model reality as a collection of abstract objects that communicate with each other and obey some specific rules. While the idea itself isn't bad and can be useful in certain cases, **OOP has become extremely overused, extremely badly implemented and downright forced in programming languages** which apply this [abstraction](abstraction.md) to every single program and concept, creating [anti-patterns](anti_pattern.md), unnecessary issues and of course [bloat](bloat.md). We therefore see OOP as a **[cancer](cancer.md) of software development**.
Ugly examples of OOP gone bad include [Java](java.md) and [C++](cpp.md) (which at least doesn't force it). Other languages such as [Python](python.md) and [Javascript](javascript.md) include OOP but have lightened it up a bit and at least allow you to avoid using it.

@ -0,0 +1,3 @@
# Rapeware
Rapeware is an aggressive [malware](malware.md), i.e. mostly [proprietary](proprietary.md) software such as [Windows](windows.md), consumer [games](game.md) etc.

@ -2,7 +2,7 @@
Vector is a basic mathematical object that expresses direction and magnitude (such as velocity, force etc.) and is usually expressed as an "array of numbers". For example in two dimensional space an array `[4,3]` expresses a vector pointing 4 units to the "right" (along X axis) and 3 units "up" (along Y axis) and has the magnitude 5 (which is the vector's length). Vectors are one of the very basic concepts of advanced math and are used almost in any advanced area of math, physics, programming etc. -- basically all of physics and engineering operates with vectors, programmers will mostly encounter them in areas such as 3D [graphics](graphics.md), [physics engines](physics_engine.md) (forces, velocities, acceleration, ...), [machine learning](machine_learning.md) (feature vectors, ...) or [signal processing](signals.md) (e.g. [Fourier transform](fourier_transform.md) just interprets a signal as a vector and transforms it to a different basis) etc. In this article we will implicitly focus on vectors from programmer's point of view (i.e. "arrays of numbers"), which to a mathematician will seem very simplified, but we'll briefly also foreshadow the mathematical view.
Just like in elemental mathematics we deal with "simple" numbers such as 10, -2/3 or [pi](pi.md) -- we retrospectively call such "simple" numbers **[scalars](scalar.md)** -- advanced mathematics generalizes the concept of such a number into vectors ("arrays of numbers", e.g. `[1,0,-3/5]` or `[0.5,0.5]`) and yet further to [matrices](matrix.md) ("two dimensional arrays of numbers") and defines a way to deal with such generalizations into **[linear algebra](linear_algebra.md)**, i.e. we have ways to add and multiply vectors and matrices and solve [equations](equation.md) with them, just like we did in elemental algebra (of course, linear algebra is a bit more complex as it mixes together scalars, vectors and matrices). In yet more advanced mathematics the concepts of vectors and matrices are further generalized to **[tensors](tensor.md)** which may also be seen as "N dimensional arrays of numbers" but further add new rules and interpretation of such "arrays" -- vectors can therefore be also seen as a tensor (of rank 1) -- note that in this context there is e.g. a fundamental distinction between row and column vectors. Keep in mind that vectors, matrices and tensors aren't the only possible generalization of numbers, another one is e.g. that of [complex numbers](complex_number.md), [quaternions](quaternion.md) etc. Anyway, in this article we won't be discussing tensors or any of the more advanced concepts further, they are pretty non-trivial and mostly beyond the scope of mere programmer's needs :) We'll keep it at linear algebra level.
Just like in elemental mathematics we deal with "simple" numbers such as 10, -2/3 or [pi](pi.md) -- we retrospectively call such "simple" numbers **[scalars](scalar.md)** -- advanced mathematics generalizes the concept of such a number into vectors ("arrays of numbers", e.g. `[1,0,-3/5]` or `[0.5,0.5]`) and yet further to [matrices](matrix.md) ("two dimensional arrays of numbers") and defines a way to deal with such generalizations into **[linear algebra](linear_algebra.md)**, i.e. we have ways to add and multiply vectors and matrices and solve [equations](equation.md) with them, just like we did in elemental algebra (of course, linear algebra is a bit more complex as it mixes together scalars, vectors and matrices). In yet more advanced mathematics the concepts of vectors and matrices are further generalized to **[tensors](tensor.md)** which may also be seen as "N dimensional arrays of numbers" but further add new rules and interpretation of such "arrays" -- vectors can therefore be also seen as a tensor (of rank 1) -- note that in this context there is e.g. a fundamental distinction between row and column vectors. Keep in mind that vectors, matrices and tensors aren't the only possible generalization of numbers, another one is e.g. that of [complex numbers](complex_number.md), [quaternions](quaternion.md), [p-adic numbers](p_adic.md) etc. Anyway, in this article we won't be discussing tensors or any of the more advanced concepts further, they are pretty non-trivial and mostly beyond the scope of mere programmer's needs :) We'll keep it at linear algebra level.
**Vector is not merely a coordinate**, though the traditional representation of it suggest such representation and programmers often use vector data types to store coordinates out of convenience (e.g. in 3D graphics engines vectors are used to specify coordinates of 3D objects); vector should properly be seen as a **direction and magnitude** which has **no position**, i.e. a way to correctly imagine a vector is something like an **arrow** -- for example if a vector represents velocity of an object, the direction (where the arrow points) says in which direction the object is moving and the magnitude (the arrow length) says how fast it is moving (its [speed](speed.md)), but it doesn't say the position of the object (the arrow itself records no position, it just "hangs in thin air").

@ -1,6 +1,8 @@
# Wikipedia
Wikipedia is a non-commercial, [free/open](free_culture.md) [pseudoleftist](pseudoleft.md) [online](www.md) encyclopedia of general knowledge written mostly by volunteers, running on [free software](free_software.md), allowing almost anyone to edit its content (i.e. being a [wiki](wiki.md)); it is the largest and perhaps most famous encyclopedia created to date. It is licensed under [CC-BY-SA](cc_by_sa.md) and is run by the [nonprofit](nonprofit.md) organization Wikimedia Foundation. It is accessible at https://wikipedia.org. Wikipedia is a mainstream information source and therefore politically censored^1234567891011121314151617181920.
Wikipedia is a non-commercial, [free/open](free_culture.md) censored [pseudoleftist](pseudoleft.md) [online](www.md) encyclopedia of general knowledge written mostly by volunteers, running on [free software](free_software.md), allowing approved and politically correct people from the public to edit its content (i.e. being a [wiki](wiki.md)); it is the largest and perhaps most famous encyclopedia created to date. It is licensed under [CC-BY-SA](cc_by_sa.md) and is run by the [nonprofit](nonprofit.md) organization Wikimedia Foundation. It is accessible at https://wikipedia.org. Wikipedia is a mainstream information source and therefore politically censored^1234567891011121314151617181920.
{ Lol I'm blocked at Wikipedia now, reason being I linked to my personal website from my userpage where I expressed unpopular opinions :D ~drummyfish }
Shortly after the project started in 2001, wikipedia used to be a great project -- it was very similar to how LRS wiki looks right now; it was relatively unbiased, objective, well readable and used plain HTML and ASCII art (see it as https://nostalgia.wikipedia.org/wiki/HomePage), however over the years it got corrupt and by 2020s it has become a political battleground and kind of a [politically correct](political_correctness.md) [joke](jokes.md). A tragic and dangerous joke at that. It's still useful in many ways but it just hardcore censors facts and even edits direct quotes to push a [pseudoleftist](pseudoleft.md) propaganda. **Do not trust Wikipedia, especially on anything even remotely touching politics**, always check facts elsewhere, e.g. in old paper books, on Metapedia, Infogalactic etc. As old Wikipedia is still accessible, you may also browse the older, less censored version, to see how it deranged from a project seeking truth to one abusing its popularity for propaganda.

Loading…
Cancel
Save