master
Miloslav Ciz 2 years ago
parent 62d993c0b6
commit fbfe468d03

@ -1,12 +1,12 @@
# Approximation
Approximating means calculating something with lesser than best possible precision -- estimating -- purposefully allowing some margin of error in results and using simpler mathematical models than the most accurate ones: this is typically done in order to save resources (CPU cycles, memory etc.) and reduce [complexity](complexity.md) so that our projects stay manageable. Simulating real world on a computer is always an approximation as we cannot capture the infinitely complex and fine nature of the real world with a machine of limited resources, but even withing this we need to consider how much, in what ways and where to simplify.
Approximating means calculating or representing something with lesser than best possible precision -- estimating -- purposefully allowing some margin of error in results and using simpler mathematical models than the most accurate ones: this is typically done in order to save resources (CPU cycles, memory etc.) and reduce [complexity](complexity.md) so that our projects and analysis stay manageable. Simulating real world on a computer is always an approximation as we cannot capture the infinitely complex and fine nature of the real world with a machine of limited resources, but even withing this we need to consider how much, in what ways and where to simplify.
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:
- **Distances**: instead of expensive **Euclidean** distance (`sqrt(dx^2 + dy^2)`) we may use **Chebyshev** distance (`dx + dy`) or **Taxicab** distance (`max(dx,dy)`).
- **[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).
- **Physics engines**: complex triangle meshes are approximated with simple analytical shapes such as **spheres**, **cuboids** and **capsules** or at least **convex hulls** which are much easier and faster to deal with. They also approximate **relativistic** physics with **Newtonian**.
- **Real time graphics engines**, on the other hand, normally approximate all shapes with triangle meshes.

@ -1,6 +1,6 @@
# Interplanetary Internet
Interplanetary Internet is at this time still hypothetical extension of the [Internet](internet.md) to multiple planets. As mankind is getting closer to start living on other planets and bodies such as [Mars](mars.md) and [Moon](moon.md), we have to start thinking about the challenges of creating a communication network between all of them. The greatest challenge is posed by the vast distances that increase the communication delay (which arises due to the limited [speed of light](speed_of_light.md)) and make errors such as [packet loss](packet_loss.md) much more painful. Two-way communication (i.e. request-response) to Moon and Mars can take even 2 seconds and 40 minutes respectively. Also things like planet motions, eclipses etc. pose problems to solve.
Interplanetary Internet is at this time still hypothetical extension of the [Internet](internet.md) to multiple planets. As mankind is getting closer to starting living on other planets and bodies such as [Mars](mars.md) and [Moon](moon.md), we have to start thinking about the challenges of creating a communication network between all of them. The greatest challenge is posed by the vast distances that increase the communication delay (which arises due to the limited [speed of light](speed_of_light.md)) and make errors such as [packet loss](packet_loss.md) much more painful. Two-way communication (i.e. request-response) to Moon and Mars can take even 2 seconds and 40 minutes respectively. Also things like planet motions, eclipses etc. pose problems to solve.
We can see that e.g. [real time](real_time.md) [Earth](earth.md)-Mars communication (e.g. [chat](chat.md) or videocalls) are physically impossible, so not only do we have to create new [network](network.md) [protocols](protocol.md) that minimize the there-and-back communication (things such as [handshakes](handshakes.md) are out of question) and implement great [redundancy](redundancy.md) for reliable recovery from loss of data traveling through space, we also need to design **new [user interfaces](ui.md)** and communication paradigms, i.e. we probably need to create a new messaging software for "interplanetary chat" that will for example show the earliest time at which the sender can expect an answer etc. [Interesting](interesting.md) shit to think about.

@ -4,6 +4,50 @@ Less retarded society (LRS, same [acronym](acronym.md) as [less retarded softwar
Note that this society is an ideal model, i.e. it can probably not be achieved 100% but it's something that gives us a direction and to which we can **get very close** with enough effort. We create an ideal theoretical model and then try to approximate it in reality, which is a [scientific](science.md) approach that is utilized almost everywhere: for example [mathematics](math.md) defines a perfect sphere and such a model is then useful in practice even if we cannot ever create a mathematically perfect sphere in the real physical world -- the mathematical equations of a sphere guide us so that with enough effort we are able to create physical spheres that are pretty close to an ideal sphere. The same can be done with society. This largely refutes the often given argument that *"it's impossible to achieve so we shouldn't try at all"* -- we should try our best and the closer to the ideal we get, the better for us.
## Basic Description
The following is a basic description of just some features of the ideal society, some of which are however only speculative. Keep in mind it is impossible to plan a whole society exactly -- even if some of the speculations here turns out to be somehow erroneous, it probably still doesn't present a fatal obstacle to implementing our society, things may simply just turn out differently or to be more or less challenging than we predict.
Our society is **[anarcho pacifist](anpac.md) and [communist](communism.md)**, meaning it rejects [capitalism](capitalism.md), [money](money.md), violence, war, states, social hierarchy etc. **Money, market, capitalism, consumerism, private property, wage labor and trade don't exist**, people are free and happy as they can pursue their true interests and potential.
**People don't have to work**, almost everything is automated and the amount of work needed to be done is minimized by eliminating unnecessary [bullshit jobs](bullshit_job.md) such as marketing, lawyers, insurance, politicians, state bureaucracy, creation of consumer entertainment and goods etc. One of the basic rights of an individual is the **right to live**, without having to deserve this right by proving worth, usefulness, obedience etc. The little remaining human work that's necessary is done voluntarily.
**Society is NOT based on [competition](competition.md), but rather on [collaboration](collaboration.md).** Making people compete for basic life resources is seen as highly cruel and unethical. The natural need for competition is still satisfied with games and sports, but people know competition is kind of a poison and know they have to practice self control to not allow competitive tendencies in real life.
**There is abundance of resources for everyone, poverty is non existent**, [artificial scarcity](artificial_scarcity.md) is no longer sustained by capitalism. There is enough food and accommodation for everyone, of course for free, as well as health care, access to information, entertainment, tools and so on. Where there used to be shopping centers, parking lots, government buildings and skyscrapers, there are now fields and people voluntarily collaborate on automating production of food on them.
**States and [governments](government.md) don't exist**. Society self regulates and consists of decentralized communities that utilize their local resources as much as they can and send abundant resources to communities that lack them. **The is no law** in the sense of complex written legislation, **no lawyers, courts and police**, society works on the principle of moral laws, education and [non-violent](nonviolence.md) actions (e.g. refusal of people to use money etc.). Many decisions nowadays taken by politicians, such as those regarding distribution of resources, are in our ideal society made by computers based on collected data and objective scientific criteria.
**Criminality doesn't exist**, there is no motivation for it as everyone has abundance of everything, no one carries guns, people don't see themselves as competing with others in life and everyone is raised in an environment that nurtures their peaceful, collaborative, selfless loving side. People with "criminal genes" have become extinct thanks to natural selection by people voluntarily choosing to breed with non-violent people.
**[Technology](technology.md) is actually simple, good and helps people**. [Internet](internet.md) is actually nice, it provides practically all [information](information.md) ever digitized, for example there is a global database of all videos ever produced, including movies, educational videos and documentaries, all without ads and [copyright](copyright.md) strikes, coming with all known [metadata](metadata.md), subtitles, annotations, accessible by many means (something akin websites, [APIs](api.md), ...), all videos can be downloaded, mirrored and complex search queries can be performed, unlike e.g. with [YouTube](youtube.md). Satellite images, streams from all live cameras and other sensors in the world are easily accessible in real time. Search engines are much more powerful than [Google](google.md) can dream of as data is organized efficiently and friendly to indexing, not hidden behind paywalls or registrations to websites, which means that for example all text of all e-books is indexed as well as all conversations ever had on the Internet and subtitles of videos. All source code of all programs is available for unlimited use by anyone. There are only a few models of standardized computers, not thousands of slightly different competing products as nowadays. There is a tiny, energy efficient computer model, then a more powerful computer for complex computation etc. All are of course without malicious features such as [DRM](drm.md), gay teenager aesthetics, consumerist "killer features" or planned obsolescence. All schematics are available. Personal computers, such as what we would nowadays call a phone, last weeks on single battery charge thanks to lack of [bloat](bloat.md) and bullshit, and are far more responsive and fast than computers nowadays despite having lower raw specs because software is written in a good way. Computers and other tools remain working and usable for many decades. The computing world is NOT split by competing standards such as different programming languages, most programmers use just one programming language similar to [C](c.md) that's been designed to maximize quality of technology (as opposed to capitalist interests such as allowing rapid development by incompetent programmers).
**Fascism doesn't exist**, people no longer compete socially and don't live in [fear](fear_culture.md) (of immigrants, poverty, losing jobs, religious extremists etc.) that would give rise to militarist thought, society is multicultural and [races](race.md) highly mixed. There is no need for things such as [political correctness](political_correctness.md) and other censorship, people acknowledge there exist differences -- differences (e.g. in competence or performance) don't matter in a non-competitive society, discrimination doesn't exist.
**Computer security is not an issue anymore**, passwords and encryption practically don't exist anymore, there is nothing to "steal", no money on the Internet, no way to abuse personal data, no possibility to ruin someone's career, no celebrity accounts to hack etc.
**All people speak the same language**, possibly [Esperanto](esperanto.md). Though some speak multiple languages, most of the world languages have become archaic and are studied e.g. for the sake of understanding old texts. Of course dialects and different accents of the world language appear, but all are mutually intelligible thanks to constant global communication and also people being so responsible as to willingly try to not diverge from the main form too much.
**People don't wear clothes** unless for practical reasons (weather, safety, ...). Fashion and shame of nudity doesn't exist and it is seen as wasteful to keep manufacturing, cleaning and recycling more clothes than necessarily needed. Of course it is NOT forbidden to wear or make clothes, people just mostly naturally don't engage in unnecessary, wasteful activity.
**Anyone can have sex with anyone**, with consent of course, but there are no taboo limitations like forbidden incest, sex with children, animals or dead bodies, everything is allowed and culturally acceptable as long as no one gets hurt. "Cheating" in today's sense doesn't exist, marriage doesn't exist, people regularly have sex with many other people just to satisfy the basic need. People have learned to separate sex and love.
**Cannibalism is acceptable** as long as high hygiene is respected as it puts a dead body to good use instead of wasting food by burying it or burning it. Even though most people don't practice cannibalism, it is perfectly acceptable that some do. Many people wish to be eaten after death either by people or by animals (as for example some [Buddhists](buddhism.md) do even nowadays).
**There are no heroes or leaders**. People learn from young age that they should follow ideas, not people, and that cults of personality are dangerous. There are known experts in different disciplines and areas of science, but no celebrities, experts aren't worshiped, their knowledge is treated the same as we nowadays e.g. treat information that we find in a database. This doesn't mean there aren't people who lead good moral examples and whose behavior is admired, people are just separated from their actions -- all people are loved unconditionally, some had the opportunity to take admirable actions and took it, some were born to perform well in sports or excel in science, but that's no reason to love the individual any more or any less or to worship him as a god.
**Education is actually good**, people (not only children) attend schools voluntarily, there are no grades, degrees or tests that need to be passed or prescribed courses, only recommendations and guidance of other people. There is no strict division to students and teachers, teachers are students at the same time, older people teach younger.
**People don't kill or otherwise abuse and torture animals**, artificial meat is widely available.
**People don't have tattoos, dyed hair, piercing etc.**, that's simply egoistic bullshit of our individualist age. Everyone is valued the same no matter their looks, people don't feel the need to change their gender or alter their look so as to appeal to anyone or to follow some kind of fashion or trend. Of course cutting hair e.g. for comfort is practiced, but no one wastes their time with makeup and similar nonsense.
**People live in harmony with nature**, the enormous waste of capitalism and consumerist society has been eliminated, industry isn't raping nature, cities are greener and more integrated with nature, people live in energy-efficient underground houses, there are fewer roads as people don't use cars that much thanks to efficient public transport and lower need for travel thanks to not having to go to work etc.
**Research advances faster, people are smarter, more rational and more moral**. Nowadays probably the majority of the greatest brains are wasted on bullshit activity such as studying and trying to hack the marked, in our ideal society smart people focus on truly relevant issues such as curing cancer. People are responsible and practice e.g. voluntary birth control to prevent overpopulation. However people are NOT cold rational machines, emotions are present sometimes much more than today, for example the emotion of love towards life is so strong most people are willing to die to save someone else, even a complete stranger. People express emotion through rich art. People are also spiritual despite being highly rational -- they know rationality is but one of many tools for viewing and understanding the world. **Religion still exists** commonly but not in radical or hostile forms, Christianity, Islam and similar religions become more similar to e.g. Buddhism, some even merge after realizing their differences are relatively unimportant.
**People live much longer and are healthier** thanks to faster research in medicine, free healthcare, minimization of stress and elimination of the [antivirus paradox](antivirus_paradox.md) from medicine.
## FAQ
- **Isn't it utopia?** As explained above, the society is an ideal model that's probably not 100% achievable, but we are pretty certain we can get extremely close to the ideal in the real world implementation, there are no known obstacles to it. Even if we couldn't get very close to the ideal, it would be better to get a little closer than not, there is no logic in refusing to try. Every major invention happened for the first time one day, even when it's been called impossible; for example before [Wikipedia](wikipedia.md) practically everyone would tell you the principles on which it would be built (free voluntary work, allowing anyone to edit) were utopian. History is basically a constant stream of events proving our disbeliefs wrong.

@ -71,7 +71,7 @@ Apart from this software a lot of other software developed by other people and g
- **[vim](vim.md)** (kind of): [TUI](tui.md) text/[programming](programming.md) [editor](editor.md). Vim is actually relatively big but there are smaller builds, flavors and alternatives.
- **[Simon Tatham's portable puzzle collection](stppc.md)**: Very portable collection of puzzle [games](game.md).
Other potentially LRS software to check out may include [TinyGL](tinygl.md), [scc](scc.md), [uClibc](uclibc.md), [miniz](miniz.md), [nuklear](nuklear.md), [dmenu](dmenu.md), [sbase](sbase.md), [sic](sic.md), [tabbed](tabbed.md), [svkbd](svkbd.md), [busybox](busybox.md) and others.
Other potentially LRS software to check out may include [TinyGL](tinygl.md), [scc](scc.md), [uClibc](uclibc.md), [miniz](miniz.md), [nuklear](nuklear.md), [dmenu](dmenu.md), [sbase](sbase.md), [sic](sic.md), [tabbed](tabbed.md), [svkbd](svkbd.md), [busybox](busybox.md), [raylib](raylib.md), [PortableGL](portablegl.md) and others.
It is also possible to talk about LRS data formats, [protocols](protocol.md), standards, designs and concepts as such etc. These might include:
@ -97,4 +97,5 @@ Other technology than software may also be aligned with LRS principles, e.g.:
- Simple cheap **[bicycle](bicycle.md)** without changing gears, as opposed to e.g. a [car](car.md).
- **[Knives](knife.md)** are pretty less retarded.
- [rocks](rock.md)
- TODO
- [chess](chess.md)
- [football](football.md)

@ -0,0 +1,23 @@
## Raylib
Raylib is a [free](free_software.md), relatively [KISS](kiss.md), [portable](portability.md) [C](c.md) (C99) [library](library.md) intended mainly for [game](game.md) development, offering [IO](io.md) handling, [2D](2d.md) and [3D](3d.md) graphics, audio, loading of different image and 3D formats etc., while restraining from a lot of [bullshit](bullshit.md) of "[modern](modern.md)" [bloated](bloat.md) engines/[frameworks](framework.md) such as having tons of [dependencies](dependency.md) and targeting only very fast computing platforms. Raylib is pretty cool and employs many of the [LRS](lrs.md)/[suckless](suckless.md) ideas, even though from our strict point of view it is still a bit more complex than it really needs to be, e.g. by using [floating point](float.md) and relying on [GPU](gpu.md) accelerated 3D graphics. In terms of [bloat](bloat.md) it can be seen as a mid way between the mainstream (e.g. [Godot](godot.md)) and [LRS](lrs.md)/[suckless](suckless.md) (e.g. [small3dlib](small3dlib.md)).
The following are some features of raylib as of writing this. The good and neutral features seem to be:
- written in [C99](c99.md)
- no external software [dependencies](dependency.md), all 3rd party libraries are packed with raylib (well, kind of, as specific platforms will require OpenGL implementation, windowing library etc.)
- no [COC](coc.md) detected
- supports many systems including [GNU](gnu.md)/[Linux](linux.md), [BSD](bsd.md), [Macshit](mac.md), [Winshit](windows.md), [Android](android.md), web browser, claims to support even [embedded](embedded.md) (but probably only the faster, not sure about [bare metal](bare_metal.md) due to OpenGL etc.)
- NOT a [framework](framework.md), very [bullshit](bullshit.md)-free
- permissive [zlib](zlib.md) [license](license.md)
- 2D and 3D support, [IO](io.md), audio, fonts, math, includes most things you need for games (seems to lack only a [physics engine](physics_engine.md))
- can load many file formats ([jpg](jpg.md), [png](png.md), [obj](obj.md), [m3d](m3d.md), [ttf](ttf.md), [wav](wav.md), [flac](flac.md), [mp3](mp3.md), [ogg](ogg.md), ...)
- bindings to 50+ languages (useless as all you need is [C](c.md) of course)
- nice documentation, many examples
And some of the bad features are:
- 150000+ [lines of code](loc.md)
- not a [header only](header_only) library, requires building ([makefile](make.md), optionally with [cmake](cmake.md))
- using [floating point](float.md) and [OpenGL](opengl.md) creates complex dependencies and sends a fuck you to small [embedded](embedded.md) computers
- even though abstracted, some software dependencies are still needed depending on the platform, e.g. on GNU/Linux you need to install [ALSA](alsa.md), [Mesa](mesa.md) and [X11](x11.md)
Loading…
Cancel
Save