This commit is contained in:
Miloslav Ciz 2022-11-18 15:01:33 +01:00
parent 46523273c7
commit 64e42585cf
13 changed files with 93 additions and 23 deletions

View file

@ -26,26 +26,51 @@ The following is a list of software usually considered a good, typical example o
## Small Bloat ## Small Bloat
Besides the typical big programs that even normies admit are bloated there exists also a smaller bloat which many people don't see as such but are nevertheless considered unnecessarily complex by some experts and/or idealists and hardcore minimalists, including [us](lrs.md). This includes for example: Besides the typical big programs that even normies admit are bloated there exists also a smaller bloat which many people don't see as such but are nevertheless considered unnecessarily complex by some experts and/or idealists and hardcore minimalists, including [us](lrs.md).
Small bloat is many times a subject of [jokes](joke.md) such as "OMG he uses a unicode fonts -- BLOAT!!!". Many times these are good jokes, it's a fun pastime to make fun out of one's own idealism. But watch out, this doesn't mean small bloat is only a joke concept at all, it plays an important role in designing good technology. When we identify something as *small bloat*, we don't necessarily have to completely avoid and reject that concept, we may just try to for example make it optional. For example in context of today's PCs using a Unicode font is not really an issue for performance, memory consumption or anything else really, but we should keep in mind it may not be so on much weaker computers or for example post-[collapse](collapse.md) computers, so we should try to design systems that don't [depend](depend.md) on Unicode.
Small bloat includes for example:
- [floating point](float.md) (complex standard with design issues, requires special hardware for acceleration, [fixed point](fixed_point.md) is better) - [floating point](float.md) (complex standard with design issues, requires special hardware for acceleration, [fixed point](fixed_point.md) is better)
- config files (and other unnecessary file I/O that requires a file I/O library, not all computers have file systems, configs should be part of source code) - config files (and other unnecessary file I/O that requires a file I/O library, not all computers have file systems, configs should be part of source code)
- any [GPU](gpu.md), [openGL](opengl.md) (complex hardware, not all computers have GPUs, [software rendering](software_rendering.md) is better) - library [linking](linking.md) ([header only](header_only.md) libraries are better)
- any [GPU](gpu.md), [openGL](opengl.md) (complex hardware and specifications, not all computers have complex GPUs, [software rendering](software_rendering.md) is better)
- [Unicode](unicode.md) (big specification requiring special libraries and big fonts, [ASCII](ascii.md) is better) - [Unicode](unicode.md) (big specification requiring special libraries and big fonts, [ASCII](ascii.md) is better)
- anything that's not strictly needed such as [antialiasing](antialiasing.md) or colors in text rendering - [antialiasing](antialiasing.md) (just ignore [aliasing](aliasing.md), use low resolution textures etc.)
- [linking](linking.md), build systems/scripts, directories and multiple source code files (single file, [header only](header_only.md) libraries and [single compilation unit](single_compilation_unit.md) programs are better) - 64 bit architectures (they only exist to allow ungodly amounts of RAM, 32 bits completely suffice for any computation, many times even 16 or 8 bits are enough)
- [proportional font](proportional_font.md) (fixed width font is better)
- [linking](linking.md), build systems/scripts, [makefiles](make.md), directories and multiple source code files (single file, [header only](header_only.md) libraries and [single compilation unit](single_compilation_unit.md) programs are better)
- [infix notation](infix_notation.md) ([postfix notation](postfix_notation.md) is better) - [infix notation](infix_notation.md) ([postfix notation](postfix_notation.md) is better)
- any [GUI](gui.md) - any [GUI](gui.md), [window managers](wm.md) (pure text mode is better)
- [operating system](os.md) ([bare metal](bare_metal.md) is better) - [operating system](os.md) ([bare metal](bare_metal.md) is better)
- [multithreading](multithreading.md), [parallelism](parallelism.md) - [multithreading](multithreading.md), [parallelism](parallelism.md), [virtual memory](virtual_memory.md), ...
- [encryption](encryption.md), [security](security.md), [memory safety](memory_safery.md) (just don't care and/or don't handle sensitive data with computers connected to the internet, don't live in a shitty society) - [encryption](encryption.md), [security](security.md), [memory safety](memory_safery.md) (just don't care and/or don't handle sensitive data with computers connected to the internet, don't live in a shitty society)
- [database](database.md) software (plain files are better) - [database](database.md) software (plain files are better)
- [C](c.md) (something in between C and [brainfuck](brainfuck.md) would be ideal, e.g. [Forth](forth.md) may come close) - [C](c.md) (something in between C and [brainfuck](brainfuck.md) would be ideal, e.g. [Forth](forth.md) may come close)
- [glibc](glibc.md), [gcc](gcc.md), [clang](clang.md) etc. (better alternatives are [tcc](tcc.md), [musl](musl.md), [uclibc](uclibc.md) etc.) - [glibc](glibc.md), [gcc](gcc.md), [clang](clang.md) etc. (better alternatives are [tcc](tcc.md), [musl](musl.md), [uclibc](uclibc.md) etc.)
- letter accents/diacritics (can normally be ignored in most languages that use them)
- [jpg](jpg.md), [png](png.md), [svg](svg.md) and similar formats (e.g. [ppm](ppm.md) or [farbfeld](farbfeld.md) is better) - [jpg](jpg.md), [png](png.md), [svg](svg.md) and similar formats (e.g. [ppm](ppm.md) or [farbfeld](farbfeld.md) is better)
- [syntax highlight](syntax_highlight.md) and just [colors](color.md) anywhere they aren't absolutely necessary
- [html](html.md), [markdown](md.md) ([plain text](plaintext.md) is better) - [html](html.md), [markdown](md.md) ([plain text](plaintext.md) is better)
- [x86](x86.md) instruction set (e.g. [ARM](arm.md) is probably better, { not completely sure how bloated ARM really is. ~drummyfish }) - [x86](x86.md) instruction set (e.g. [ARM](arm.md) is probably better, { Not completely sure how bloated ARM really is. ~drummyfish })
- any non-[public-domain](public_domain.md) license (any legal burden introduced by a license is unnecessary bloat) - any non-[public-domain](public_domain.md) license (any legal burden introduced by a license is unnecessary bloat)
- [computers](computer.md) (pen and paper is better)
- dynamic [linking](linking.md) (static linking is better) - dynamic [linking](linking.md) (static linking is better)
- ... - [web](web.md) 1.0, [gemini](gemini.md) ([gopher](gopher.md) or [FTP](ftp.md) is better)
- [mouse](mouse.md) (keyboard is better)
- [TCP](tcp.md) ([UDP](udp.md) is probably better)
- [vim](vim.md) (things like [ed](ed.md) are probably better?)
- sound (picture is usually enough)
- high resolution (640x480 is probably the maximum you'll ever need, lower resolution takes less RAM and makes rendering faster)
- [true color](true_color.md) (256 colors, e.g. [332](332.md) palette, is better)
- [GNU](gnu.md) Unix utils (things like [busybox](busybox.md) or [sbase](sbase.md) are probably better)
- [data types](data_type.md) (untyped or single type is better, everything can be just a [number](number.md))
- [package managers](package_manager.md) (just don't use them, install just a few programs manually, or at least make package managers as simple as possible)
- [computers](computer.md) (pen and paper or counting with [rocks](rock.md) is better)
- ...
## Non-Computer Bloat
The concept of bloat can be applied even outside the computing world, e.g. to non-computer technology, [art](art.md), [culture](culture.md), [law](law.md) etc. Here it becomes kind of synonymous with [bullshit](bullshit.md), but using the word *bloat* says we're approaching the issue as computer programmers.
TODO: examples

View file

@ -11,12 +11,12 @@ A ridiculous example of capitalist software is the most consumerist type: [games
But how can possibly a [FOSS](foss.md) program be abusive? Let's mention a few examples: But how can possibly a [FOSS](foss.md) program be abusive? Let's mention a few examples:
- Being a **[bloat monopoly](bloat_monopoly.md)**. - Being a **[bloat monopoly](bloat_monopoly.md)**.
- **Allowing [maintenance](maintenance.md) cost to be high** and prioritizing e.g. [features](feature_creep.md) leads to program being expensive to maintain which discriminizes against developers unable to pay this maintenance cost. If a rich corporation intentionally makes their program bloated and expensive to just maintain, it ensures no one poor will be able to fork the software and maintain it, which effectively removes the possibility of an ethical competition being made our of their "open source" program. - **Allowing [maintenance](maintenance.md) cost to be high** and prioritizing e.g. [features](feature_creep.md) leads to program being expensive to maintain which discriminizes against developers unable to pay this maintenance cost. If a rich corporation intentionally makes their program bloated and expensive to just maintain, it ensures no one poor will be able to fork the software and maintain it, which effectively removes the possibility of an ethical competition being made out of their "open source" program.
- **[Bloat](bloat.md), intentional [obscurity](obscurity.md) and [update_culture](update_culture.md) may lead to de-facto (as opposed to de-jure) limitations of basic [freedom conditions](free_software.md), despite a free license**. Specifically freedom 1 (to study the software, which may be unnecessarily difficult and **expensive**) and 2 (to modify the software, which requires its understanding, unnecessarily high cost of dealing with bad code and the ability to compile it which may be non-trivial). Therefore a company may, on paper, provide the rights to study and modify their program, but keep the actual know-how of the program's working and modification private, de-facto becoming the program's owner and sole controlling entity. - **[Bloat](bloat.md), intentional [obscurity](obscurity.md) and [update_culture](update_culture.md) may lead to de-facto (as opposed to de-jure) limitations of basic [freedom conditions](free_software.md), despite a free license**. Specifically freedom 1 (to study the software, which may be unnecessarily difficult and **expensive**) and 2 (to modify the software, which requires its understanding, unnecessarily high cost of dealing with bad code and the ability to compile it which may be non-trivial). Therefore a company may, on paper, provide the rights to study and modify their program, but keep the actual know-how of the program's working and modification private, de-facto becoming the program's owner and sole controlling entity.
- **Allowing [proprietary](proprietary.md) [dependencies](dependency.md)**, especiall in [open source](open_source.md). While free software usually avoids this, open source if happy with e.g. Windows-only programs which of course requires the users to run abusive code in order for the program to function. - **Allowing [proprietary](proprietary.md) [dependencies](dependency.md)**, especiall in [open source](open_source.md). While free software usually avoids this, open source if happy with e.g. Windows-only programs which of course requires the users to run abusive code in order for the program to function.
- **Unnecessarily high [hardware](hardware.md) demands and dropping support for old hardware** which drives [consumerism](consumerism.md) and discriminates against poor people and people who just don't want to "consoom" hardware. A group can make "open source" software that intentionally requires the latest hardware that they just happen to sell (e.g. [gaymes](game.md) with "AAA graphics"), even if the software might in theory run on older hardware. Possible "fixes" of this by third parties can be prevented by the above mentioned techniques. - **Unnecessarily high [hardware](hardware.md) demands and dropping support for old hardware** which drives [consumerism](consumerism.md) and discriminates against poor people and people who just don't want to "consoom" hardware. A group can make "open source" software that intentionally requires the latest hardware that they just happen to sell (e.g. [gaymes](game.md) with "AAA graphics"), even if the software might in theory run on older hardware. Possible "fixes" of this by third parties can be prevented by the above mentioned techniques.
- **Allowing [bloat](bloat.md) to increase the risk of security vulnerabilities and bugs** (which may in some ares be fatal and lead to literal deaths). - **Allowing [bloat](bloat.md) to increase the risk of security vulnerabilities and bugs** (which may in some ares be fatal and lead to literal deaths).
- **Obscurity may be used to successfully hide malicious features even withing publicly accessible code**. {TODO: examples. ~drummyfish} - **Obscurity may be used to successfully hide malicious features even within publicly accessible code**. {TODO: examples. ~drummyfish}
- **Introducing dangerous dependencies**: for example a fully free software may be unnecessarily designed as [cloud](cloud.md) software which increases the risk of its non functionality e.g. in cases of Internet blackouts (or just any loss of connection). - **Introducing dangerous dependencies**: for example a fully free software may be unnecessarily designed as [cloud](cloud.md) software which increases the risk of its non functionality e.g. in cases of Internet blackouts (or just any loss of connection).
- **Licenses can by bypassed**, e.g. [copyleft](copyleft.md) was legally eliminated by [Google](google.md)'s [Android](android.md) which is based on copylefted [Linux](linux.md): their proprietary Play Store is a 3rd party program to which the copyleft doesn't apply but which is essential for Android and serves to control Android (which should have been prevented by the copyleft).This is an example of a FOSS "protection mechanism" failing under capitalist pressure. - **Licenses can by bypassed**, e.g. [copyleft](copyleft.md) was legally eliminated by [Google](google.md)'s [Android](android.md) which is based on copylefted [Linux](linux.md): their proprietary Play Store is a 3rd party program to which the copyleft doesn't apply but which is essential for Android and serves to control Android (which should have been prevented by the copyleft).This is an example of a FOSS "protection mechanism" failing under capitalist pressure.
- Setting up a **discriminatory, fascist and toxic development environment**, e.g. in the form of [codes of conduct](coc.md). This allows to bully and "cancel" developers who are, for whatever reason, unwelcome. - Setting up a **discriminatory, fascist and toxic development environment**, e.g. in the form of [codes of conduct](coc.md). This allows to bully and "cancel" developers who are, for whatever reason, unwelcome.

View file

@ -154,6 +154,18 @@ A player cannot make a move that would leave him in check!
Threefold repetition is a rule allowing a player to claim a draw if the same position (piece positions, player's turn, castling rights, en passant state) occurs three times (not necessarily consecutively). The 50 move rule allows a player to claim a draw if no pawn has moved and no piece has been captured in last 50 moves (both players making their move counts as a single move here). Threefold repetition is a rule allowing a player to claim a draw if the same position (piece positions, player's turn, castling rights, en passant state) occurs three times (not necessarily consecutively). The 50 move rule allows a player to claim a draw if no pawn has moved and no piece has been captured in last 50 moves (both players making their move counts as a single move here).
## LRS Chess
Chess is only mildly [bloated](bloat.md) but what if we try to unbloat it completely? Here we propose the LRS version of chess. The rule changes against normal chess are:
- No castling.
- No en passant.
- Promotion is always to queen.
- No checks or checkmates, king is just another piece.
- Whoever takes the opponent's king first wins.
- Only a single draw rule: if game doesn't end in 1024 half moves or fewer, it is a draw. I.e. there are no weird draw rules (50 move, repetition, ...). Of course players may still agree on draw anytime.
- Random: optionally random variant of LRS chess can be played. Here we randomly shuffle the white player's back row pieces in the starting position and mirror it for black (no weird conditions on piece positions like in chess 960).
## See Also ## See Also
- [checkers](checkers.md) - [checkers](checkers.md)

View file

@ -1,6 +1,6 @@
# Competition # Competition
Competition is a situation of conflict in which several entities try to overpower or otherwise win over each other. It is the opposite of [collaboration](collaboration.md). Competition is a situation of conflict in which several entities try to overpower or otherwise win over each other. It is the opposite of [collaboration](collaboration.md). Competition is connected to pursuing [self interest](self_interest.md).
**Competition is the absolute root cause of all [evil](evil.md) in society. Society must never be based on competition**. Unfortunately our society has decided to do the exact opposite with [capitalism](capitalism.md), the glorification of competition -- this will very likely lead to the [destructing of our society](collapse.md), possibly even to the destruction of all [life](life.md). **Competition is the absolute root cause of all [evil](evil.md) in society. Society must never be based on competition**. Unfortunately our society has decided to do the exact opposite with [capitalism](capitalism.md), the glorification of competition -- this will very likely lead to the [destructing of our society](collapse.md), possibly even to the destruction of all [life](life.md).

3
dog.md
View file

@ -17,4 +17,5 @@ Send this to anyone who's feeling down :)
## See Also ## See Also
- [watchdog](watchdog.md) - [watchdog](watchdog.md)
- [cat](cat.md) - [cat](cat.md)
- [mouse](mouse.md)

View file

@ -1,6 +1,6 @@
# Formal Language # Formal Language
The field of formal languages tries to [mathematically](math.md) and rigorously describe and examine anything that can be viewed as a language, which probably includes most structures we can think of, from human languages and computer languages to visual patterns and other highly abstract structures. Formal languages are at the root of theoretical [computer science](compsci.md) and are important e.g. for [computability](computability.md)/decidability, computational complexity, [security](security.md) and [compilers](compiler.md), but they also find use in linguistics and other fields of [science](science.md). The field of formal languages tries to [mathematically](math.md) and rigorously examine and describe anything that can be viewed as a language, which probably includes most structures we can think of, from human languages and computer languages to visual patterns and other highly abstract structures. Formal languages are at the root of theoretical [computer science](compsci.md) and are important e.g. for [computability](computability.md)/decidability, computational complexity, [security](security.md) and [compilers](compiler.md), but they also find use in linguistics and other fields of [science](science.md).
A **formal language** is defined as a (potentially infinite) set of strings over some alphabet (which is finite). I.e. a language is a subset of E* where E is a finite alphabet (a set of *letters*). (* is a *Kleene Star* and signifies a set of all possible strings over E). The string belonging to a language may be referred to as a *word* or perhaps even *sentence*, but this word/sentence is actually a whole kind of *text* written in the language, if we think of it in terms of our natural languages. A **formal language** is defined as a (potentially infinite) set of strings over some alphabet (which is finite). I.e. a language is a subset of E* where E is a finite alphabet (a set of *letters*). (* is a *Kleene Star* and signifies a set of all possible strings over E). The string belonging to a language may be referred to as a *word* or perhaps even *sentence*, but this word/sentence is actually a whole kind of *text* written in the language, if we think of it in terms of our natural languages.

2
lil.md
View file

@ -1,5 +1,7 @@
# LIL # LIL
*There is an old language called LIL (little implementation language), but this article is about a different language also called LIL (little interpreted language by Kostas Michalopoulos).*
Little interpreted language (LIL) is a very nice [suckless](suckless.md), yet practically unknown interpreted [programming language](programming_language.md) by Kostas Michalopoulos which can very easily be embedded in other programs. In this it is similar to [Lua](lua.md) but is even more simple: it is implemented **in just two [C](c.md) source code files** (lil.c and lil.h) that together count about 3700 [LOC](loc.md). It is provided under [zlib](zlib.md) [license](license.md). More information about it is available at http://runtimeterror.com/tech/lil. Little interpreted language (LIL) is a very nice [suckless](suckless.md), yet practically unknown interpreted [programming language](programming_language.md) by Kostas Michalopoulos which can very easily be embedded in other programs. In this it is similar to [Lua](lua.md) but is even more simple: it is implemented **in just two [C](c.md) source code files** (lil.c and lil.h) that together count about 3700 [LOC](loc.md). It is provided under [zlib](zlib.md) [license](license.md). More information about it is available at http://runtimeterror.com/tech/lil.
{ LIL is relatively amazing. I've been able to make it work on such low-specs hardware as Pokitto (32kb RAM embedded). ~drummyfish } { LIL is relatively amazing. I've been able to make it work on such low-specs hardware as Pokitto (32kb RAM embedded). ~drummyfish }

View file

@ -43,9 +43,11 @@ LRS Wiki is [collapse](collapse.md) ready! Feel free to print it out, take it to
If you're new here, you may want to read answers to [frequently asked questions](faq.md) (**FAQ**), including "Are you a fascist?" (spoiler: no) and "Do you love Hitler?". If you're new here, you may want to read answers to [frequently asked questions](faq.md) (**FAQ**), including "Are you a fascist?" (spoiler: no) and "Do you love Hitler?".
## What Is Less Retarded Software? ## What Is Less Retarded Software/Society?
Well, we're trying to figure this out on this wiki, but it is greatly related to [suckless](suckless.md), [Unix](unix.md), [KISS](kiss.md), [free](free_software.md), selfless and sustainable software created to maximally help all living beings. LRS stands opposed to all [shittiness](shit.md) of so called ["modern"](modern.md) software. We pursue heading towards an ideal society such as that of the [Venus project](venus_project.md). For more details see the article about [LRS](lrs.md). Well, we're trying to figure this out on this wiki, but less retarded software is greatly related to [suckless](suckless.md), [Unix](unix.md), [KISS](kiss.md), [free](free_software.md), selfless and sustainable software created to maximally help all living beings. LRS stands opposed to all [shittiness](shit.md) of so called ["modern"](modern.md) software. We pursue heading towards an ideal society such as that of the [Venus project](venus_project.md). For more details see the article about [LRS](lrs.md).
In short LRS asks *what if technology was good?* And by extension also *what if society was good?*
## Are You A Noob? ## Are You A Noob?

View file

@ -31,8 +31,11 @@ These are mainly for [C](c.md), but may be usable in other languages as well.
- Search literature for **algorithms with better [complexity class](complexity_class.md)** (sorts are a nice example). - Search literature for **algorithms with better [complexity class](complexity_class.md)** (sorts are a nice example).
- For the sake of simple computers such as [embedded](embedded.md) platforms **avoid [floating point](floating_point.md)** as that is often painfully slowly emulated in software. Use [fixed point](fixed_point.md), or at least offer it as a [fallback](fallback.md). This also applies to other hardware requirements such as [GPU](gpu.md) or sound cards: while such hardware accelerates your program on computers that have the hardware, making use of it may lead to your program being slower on computers that lack it. - For the sake of simple computers such as [embedded](embedded.md) platforms **avoid [floating point](floating_point.md)** as that is often painfully slowly emulated in software. Use [fixed point](fixed_point.md), or at least offer it as a [fallback](fallback.md). This also applies to other hardware requirements such as [GPU](gpu.md) or sound cards: while such hardware accelerates your program on computers that have the hardware, making use of it may lead to your program being slower on computers that lack it.
- **[Early branching](early_branching.md) can create a speed up** (instead of branching inside the loop create two versions of the loop and branch in front of them). This is a kind of space-time tradeoff. - **[Early branching](early_branching.md) can create a speed up** (instead of branching inside the loop create two versions of the loop and branch in front of them). This is a kind of space-time tradeoff.
- **Division can be replaced by multiplication by [reciprocal](reciprocal.md)**, i.e. *x / y = x * 1/y*. The point is that multiplication is usually faster than division. This trick doesn't help us when performing a single division (as we still have to divide 1 by *y*) but it does help when we need to divide many numbers by the same number; here we precompute the reciprocal value and then multiply all numbers by it. Of course this can also easily be done with [fixed point](fixed_point.md) and integers!
- **Reuse variable to save space**. A warning about this one: readability may suffer, mainstreamers will tell you you're going against "good practice", and some compilers may do this automatically anyway. Be sure to at least make this clear in your comments. Anyway, on a lower level and/or with dumber compilers you can just reuse variables that you used for something else rather than creating a new variable that takes additional RAM; the only prerequisite for "merging" variables is that the variables aren't used at the same time. - **Reuse variable to save space**. A warning about this one: readability may suffer, mainstreamers will tell you you're going against "good practice", and some compilers may do this automatically anyway. Be sure to at least make this clear in your comments. Anyway, on a lower level and/or with dumber compilers you can just reuse variables that you used for something else rather than creating a new variable that takes additional RAM; the only prerequisite for "merging" variables is that the variables aren't used at the same time.
- **What's fast on one platform may be slow on another**. This depends on the instruction set as well as on compiler, operating system, available hardware, [driver](driver.md) implementation and other details. In the end you always need to test on the specific platform to be sure about how fast it will run. - **What's fast on one platform may be slow on another**. This depends on the instruction set as well as on compiler, operating system, available hardware, [driver](driver.md) implementation and other details. In the end you always need to test on the specific platform to be sure about how fast it will run.
- **Mental calculation tricks**, e.g. multiplying by one less or more than a power of two is equal to multiplying by power of two and subtracting/adding once, for example *x * 7 = x * 8 - x*; the latter may be faster as a multiplication by power of two (bit shift) and addition/subtraction may be faster than single multiplication, especially on some primitive platform without hardware multiplication. However this needs to be tested on the specific platform. Smart compilers perform these optimizations automatically, but not every compiler is high level and smart.
- **Else should be the less likely branch**, try to make if conditions so that the if branch is the one with higher probability of being executed -- this can help branch prediction.
- **You can optimize critical parts of code in [assembly](assembly.md)**, i.e. manually write the assembly code that takes most of the running time of the program, with as few and as inexpensive instructions as possible (but beware, popular compilers are very smart and it's often hard to beat them). But note that such code loses [portability](portability.md)! So ALWAYS have a C (or whatever language you are using) [fallback](fallback.md) code for other platforms, use [ifdefs](ifdef.md) to switch to the fallback version on platforms running on different assembly languages. - **You can optimize critical parts of code in [assembly](assembly.md)**, i.e. manually write the assembly code that takes most of the running time of the program, with as few and as inexpensive instructions as possible (but beware, popular compilers are very smart and it's often hard to beat them). But note that such code loses [portability](portability.md)! So ALWAYS have a C (or whatever language you are using) [fallback](fallback.md) code for other platforms, use [ifdefs](ifdef.md) to switch to the fallback version on platforms running on different assembly languages.
## When To Actually Optimize? ## When To Actually Optimize?

View file

@ -1,11 +1,13 @@
# Productivity Cult # Productivity Cult
Productivity cult is one of [modern](modern.md) [capitalist](capitalism.md) religions which praises human productivity above everything, even happiness, well being, sanity etc. Kids nowadays are all about "how to be more productive", they make daily checklists, analyze tables of their weekly performance, give up sleep to study some useless shit required by the current market fluctuation. Productivity cult is all about voluntarily making oneself a robot, a slave to the system. Productivity cult is one of [modern](modern.md) [capitalist](capitalism.md) religions which praises human productivity above everything, even happiness, well being, sanity etc. Kids nowadays are all about "how to be more productive", they make daily checklists, analyze tables of their weekly performance, count how much time they spend taking a shit on the toilet, give up sleep to study some useless bullshit required by the current market fluctuation. Productivity cult is all about voluntarily making oneself a robot, a slave to the system that worships capital.
The name of the cult itself [says a lot about it](name_is_important.md). While a name such as *efficiency* would probably be better, as efficiency means doing less work with the same result and therefore being happier, it is not a surprise that capitalism has chosen the word *productivity*, i.e. producing more which means working more, e.g. for the price of free time and mental health. The name of the cult itself [says a lot about it](name_is_important.md). While a name such as *efficiency* would probably be better, as efficiency means doing less work with the same result and therefore having more free time, it is not a surprise that capitalism has chosen the word *productivity*, i.e. producing more which means working more, e.g. for the price of free time and mental health.
Productivity obsessed people are idiots, they have desktops with "motivational" wallpapers saying shit like "the word impossible doesn't exist in my dictionary" and when you tell them if it wouldn't be better to rather establish a society where people wouldn't have to work they start screeching "THAT IMPOSSIBLE IT CANT WORK". It's funny that many people who despise the cult of extreme [consooming](consumerism.md) subscribe to the cult of extreme producing.
One of the funniest examples of productivity cult gone too far is so called "[life couching](life_couching.md)" in which the aspiring producer robots hire bullshit cult leaders, so called "life couches", to shout at them to be more productive. At least in the past slaves were aware of being slaves and tried to free themselves. I literally want to [kill myself](suicide.md). One of the funniest examples of productivity cult gone too far is so called "[life couching](life_couching.md)" in which the aspiring producer robots hire bullshit cult leaders, so called "life couches", to shout at them to be more productive. At least in the past slaves were aware of being slaves and tried to free themselves. I literally want to [kill myself](suicide.md).
Productivity is such a big deal because **programmers are in fact actually getting exponentially less productive** due to overcomplicated buggy [bloat](bloat.md) and billions of frameworks needed to get basic thing done nowadays -- this has been pointed out by [Jonathan Blow](jonathan_blow.md) in his talk *Preventing the Collapse of Civilization* in which he refers to the video of [Ken Thompson](ken_thompson.md) talking about how he developed the [Unix](unix.md) operating system in **three weeks**. Productivity is such a big deal because **programmers are in fact actually getting exponentially less productive** due to time needed to spend on [bullshit](bullshit.md) nowadays, on overcomplicated buggy [bloat](bloat.md) and billions of frameworks needed to get basic things done -- this has been pointed out by [Jonathan Blow](jonathan_blow.md) in his talk *Preventing the Collapse of Civilization* in which he refers to the video of [Ken Thompson](ken_thompson.md) talking about how he developed the [Unix](unix.md) operating system in **three weeks**.
A considerable number of people are attracted to [suckless](suckless.md) software due to its positive effects on productivity. These are mostly idiots who just try to exploit anything they encounter for [self interest](self_interest.md) without ever aiming for greater good, they don't care about Unix philosophy beyond its effects on increasing their salary. Beware of them, they poison the community. A considerable number of people are attracted to [suckless](suckless.md) software due to its positive effects on productivity thanks to the elimination of bullshit. These are mostly the kind of above mentioned dumbasses who just try to exploit anything they encounter for [self interest](self_interest.md) without ever aiming for greater good, they don't care about Unix philosophy beyond its effects on increasing their salary. Beware of them, they poison society.

21
sin.md
View file

@ -69,12 +69,29 @@ There exists an **ugly engineering [approximation](approximation.md)** of sine t
Indeed, sine looks similar to a mere line near 0, but you can see it quickly diverges. Indeed, sine looks similar to a mere line near 0, but you can see it quickly diverges.
When implementing your own `sin` function, consider what you expect from it. When implementing your own `sin` function, consider what you expect from it.
If you want a small, fast and perhaps integer only `sin` function (the one we'd prefer in [LRS](lrs.md)) that doesn't need extreme accuracy, consider using a **[look up table](lut.md)**. You simply precompute the values of the sine function into a static table in memory and the function just retrieves them when called -- this is super fast. Note that you can save a lot of space by **only storing sine values between 0 and 1/2 pi**, the remaining parts of the function are just different transformations of this part. You can further save space and/or make the function work with [floats](float.md) by further [interpolating](interpolation.md) (even just linearly) between the stored values, for example if `sin(3.45)` is called and you only have values stored for `sin(3.4)` and `sin(3.5)`, you simply average them. If you want a small, fast and perhaps integer only `sin` function (the one we'd prefer in [LRS](lrs.md)) that doesn't need extreme accuracy, consider using a **[look up table](lut.md)**. You simply precompute the values of the sine function into a static table in memory and the function just retrieves them when called -- this is super fast. Note that you can save a lot of space by **only storing sine values between 0 and 1/2 pi**, the remaining parts of the function are just different transformations of this part. You can further save space and/or make the function work with [floats](float.md) by further [interpolating](interpolation.md) (even just linearly) between the stored values, for example if `sin(3.45)` is called and you only have values stored for `sin(3.4)` and `sin(3.5)`, you simply average them.
If you don't need extreme speed there exist nice sine [approximation](approximation.md), e.g. the extremely accurate **Bhaskara I's approximation** (angle in radians): *sin(x) ~= (16 * x * (pi - x)) / (5 * pi^2 - 4 * x * (pi - x))*. (This formula is actually more elegant for cosine, so it may be even better to consider using that.) Here is a [C](c.md) [fixed point](fixed_point.md) implementation: Very rough and fast approximations e.g. for primitive music synthesis can be done with the traditional very basic [square](square_function.md) or [triangle](triangle_function.md) functions. The following is a simple 8bit linear approximation that's more accurate than square or triangle (approximates sine with a linear function in each quadrant):
```
unsigned char sinA(uint8_t x)
{
unsigned char quadrant = x / 64;
x %= 64;
if (quadrant % 2 == 1)
x = 63 - x;
x = x < 32 ? (2 * x + x) : (64 + x);
return quadrant <= 1 ? (128 + x) : (127 - x);
}
```
If you don't need extreme speed there exist very nice sine [approximations](approximation.md), e.g. the extremely accurate **Bhaskara I's approximation** (angle in radians): *sin(x) ~= (16 * x * (pi - x)) / (5 * pi^2 - 4 * x * (pi - x))*. (This formula is actually more elegant for cosine, so it may be even better to consider using that.) Here is a [C](c.md) [fixed point](fixed_point.md) implementation:
``` ```
#define UNIT 1024 #define UNIT 1024

3
tattoo.md Normal file
View file

@ -0,0 +1,3 @@
# Tattoo
Tattoo is a body disfigurement formed by injecting ink under the skin to permanently mark it. Tattoo is a cheap sign of [egoism](egoism.md), [narcissism](narcissism.md), herd mentality, [identity](identity_politics.md) crisis and overconfidence of someone desperately trying to get attention or make oneself look interesting. We highly advise to distance oneself from anyone having a voluntarily made tattoo.

View file

@ -2,6 +2,8 @@
The Venus Project is a big project established by [Jacque Fresco](jacque_fresco.md), already running for decades, aiming for a voluntary and rational transition towards an ideal, highly technological and automated [society](society.md) without [money](money.md), scarcity, need for human [work](work.md), social [competition](competition.md), wars and violence, a society in which people would have abundance thanks to so called [resource based economy](resource_based_economy.md), where they would be [collaborating](collaboration.md), loving, respecting the nature, caring for others and free to pursue their true potential. It is similar to the [Zeitgeist Movement](zeitgeist_movement.md). In its views, goals and means the Venus Project is extremely close to [LRS](lrs.md) and we highly support it. The Venus Project is a big project established by [Jacque Fresco](jacque_fresco.md), already running for decades, aiming for a voluntary and rational transition towards an ideal, highly technological and automated [society](society.md) without [money](money.md), scarcity, need for human [work](work.md), social [competition](competition.md), wars and violence, a society in which people would have abundance thanks to so called [resource based economy](resource_based_economy.md), where they would be [collaborating](collaboration.md), loving, respecting the nature, caring for others and free to pursue their true potential. It is similar to the [Zeitgeist Movement](zeitgeist_movement.md). In its views, goals and means the Venus Project is extremely close to [LRS](lrs.md) and we highly support it.
There is a non-profit organization called [One Community](one_community.md) that tries to pursue goals set by the Venus Project and strive for what they call *Highest Good*. Its website is at https://www.onecommunityglobal.org.
## Overview ## Overview
{ The following is based mainly on my understanding of what I've read in Fresco's book *The Best That Money Can't Buy*. I recommend the book for an overall overview of the project. ~drummyfish } { The following is based mainly on my understanding of what I've read in Fresco's book *The Best That Money Can't Buy*. I recommend the book for an overall overview of the project. ~drummyfish }
@ -53,4 +55,5 @@ TODO
- [less retarded society](less_retarded_society.md) - [less retarded society](less_retarded_society.md)
- [trade-free](trade_free.md) - [trade-free](trade_free.md)
- [Zeitgeist Movement](zeitgeist_movement.md) - [Zeitgeist Movement](zeitgeist_movement.md)
- [TROM](trom.md) - [TROM](trom.md)
- [One Community](one_community.md)