Init
This commit is contained in:
commit
39bdc06ddf
41 changed files with 684 additions and 0 deletions
3
4chan.md
Normal file
3
4chan.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# 4chan
|
||||||
|
|
||||||
|
4chan (https://4chan.org/) is the most famous [image board](image_board.md) and a place where probably most [memes](meme.md) come from. As image boards typically do, 4chan has a nice, oldschool minimalist look, even though it contains shitty captchas for posting and the site's code is [proprietary](proprietary.md). The site tolerates a great amount of [free speech](free_speech.md) up to the point of being regularly labeled "right-wing extremist site" (although bans for stupid reasons are very common, speaking from experience). For us the most important part of 4chan is the technology board known as /g (for technoloGEE).
|
121
LICENSE
Normal file
121
LICENSE
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
Creative Commons Legal Code
|
||||||
|
|
||||||
|
CC0 1.0 Universal
|
||||||
|
|
||||||
|
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||||
|
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||||
|
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||||
|
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||||
|
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||||
|
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||||
|
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||||
|
HEREUNDER.
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer
|
||||||
|
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||||
|
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||||
|
authorship and/or a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for
|
||||||
|
the purpose of contributing to a commons of creative, cultural and
|
||||||
|
scientific works ("Commons") that the public can reliably and without fear
|
||||||
|
of later claims of infringement build upon, modify, incorporate in other
|
||||||
|
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||||
|
and for any purposes, including without limitation commercial purposes.
|
||||||
|
These owners may contribute to the Commons to promote the ideal of a free
|
||||||
|
culture and the further production of creative, cultural and scientific
|
||||||
|
works, or to gain reputation or greater distribution for their Work in
|
||||||
|
part through the use and efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any
|
||||||
|
expectation of additional consideration or compensation, the person
|
||||||
|
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||||
|
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||||
|
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||||
|
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||||
|
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||||
|
protected by copyright and related or neighboring rights ("Copyright and
|
||||||
|
Related Rights"). Copyright and Related Rights include, but are not
|
||||||
|
limited to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display,
|
||||||
|
communicate, and translate a Work;
|
||||||
|
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or
|
||||||
|
likeness depicted in a Work;
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work,
|
||||||
|
subject to the limitations in paragraph 4(a), below;
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||||
|
in a Work;
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||||
|
European Parliament and of the Council of 11 March 1996 on the legal
|
||||||
|
protection of databases, and under any national implementation
|
||||||
|
thereof, including any amended or successor version of such
|
||||||
|
directive); and
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the
|
||||||
|
world based on applicable law or treaty, and any national
|
||||||
|
implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||||
|
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||||
|
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||||
|
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||||
|
of action, whether now known or unknown (including existing as well as
|
||||||
|
future claims and causes of action), in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or future
|
||||||
|
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||||
|
including without limitation commercial, advertising or promotional
|
||||||
|
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||||
|
member of the public at large and to the detriment of Affirmer's heirs and
|
||||||
|
successors, fully intending that such Waiver shall not be subject to
|
||||||
|
revocation, rescission, cancellation, termination, or any other legal or
|
||||||
|
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||||
|
as contemplated by Affirmer's express Statement of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||||
|
be judged legally invalid or ineffective under applicable law, then the
|
||||||
|
Waiver shall be preserved to the maximum extent permitted taking into
|
||||||
|
account Affirmer's express Statement of Purpose. In addition, to the
|
||||||
|
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||||
|
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||||
|
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||||
|
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||||
|
maximum duration provided by applicable law or treaty (including future
|
||||||
|
time extensions), (iii) in any current or future medium and for any number
|
||||||
|
of copies, and (iv) for any purpose whatsoever, including without
|
||||||
|
limitation commercial, advertising or promotional purposes (the
|
||||||
|
"License"). The License shall be deemed effective as of the date CC0 was
|
||||||
|
applied by Affirmer to the Work. Should any part of the License for any
|
||||||
|
reason be judged legally invalid or ineffective under applicable law, such
|
||||||
|
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||||
|
of the License, and in such case Affirmer hereby affirms that he or she
|
||||||
|
will not (i) exercise any of his or her remaining Copyright and Related
|
||||||
|
Rights in the Work or (ii) assert any associated claims and causes of
|
||||||
|
action with respect to the Work, in either case contrary to Affirmer's
|
||||||
|
express Statement of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||||
|
surrendered, licensed or otherwise affected by this document.
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or
|
||||||
|
warranties of any kind concerning the Work, express, implied,
|
||||||
|
statutory or otherwise, including without limitation warranties of
|
||||||
|
title, merchantability, fitness for a particular purpose, non
|
||||||
|
infringement, or the absence of latent or other defects, accuracy, or
|
||||||
|
the present or absence of errors, whether or not discoverable, all to
|
||||||
|
the greatest extent permissible under applicable law.
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||||
|
that may apply to the Work or any use thereof, including without
|
||||||
|
limitation any person's Copyright and Related Rights in the Work.
|
||||||
|
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||||
|
consents, permissions or other rights required for any use of the
|
||||||
|
Work.
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||||
|
party to this document and has no duty or obligation with respect to
|
||||||
|
this CC0 or use of the Work.
|
7
README.md
Normal file
7
README.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Less Retarded Wiki
|
||||||
|
|
||||||
|
Wiki about less retarded software and related topics.
|
||||||
|
|
||||||
|
By contributing you agree to release your contribution under CC0 1.0, public domain (https://creativecommons.org/publicdomain/zero/1.0/). Please do **not** add anything copyrighted to this Wiki (such as copy pasted texts from elsewhere, images etc.).
|
||||||
|
|
||||||
|
Start reading at the [main page](main.md).
|
5
arch.md
Normal file
5
arch.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Arch Linux
|
||||||
|
|
||||||
|
*"BTW I use Arch"*
|
||||||
|
|
||||||
|
Arch Linux is a [rolling-release](rolling_release.md) [Linux](linux.md) distribution for the "tech-savvy", mostly fedora-wearing weirdos.
|
22
assembly.md
Normal file
22
assembly.md
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Assembly
|
||||||
|
|
||||||
|
*GUYS I AM NOT SUCH GREAT AT ASSEMBLY, correct my errors*
|
||||||
|
|
||||||
|
Assembly is, for any given hardware platform ([ISA](isa.md)), the unstructured, lowest levels language -- it maps 1:1 to [machine code](machine_code.md) (the actual CPU instructions) and only differs from actual binary machine code by utilizing a more human readable form. Assembly is compiled by [assembler](assembler.md) into the the machine code. Assembly is **not** a single language, it differs for every architecture, and is therefore not [portable](portability.md)!
|
||||||
|
|
||||||
|
## Typical Assembly Language
|
||||||
|
|
||||||
|
The language is unstructured, i.e. there are no control structures such as `if` or `for` statements: these have to be manually implemented using labels and jump instructions. The typical look of an assembly program is therefore a single column of instructions with arguments, one per line.
|
||||||
|
|
||||||
|
The working of the language reflects the actual hardware architecture -- usually there is a small number of registers (e.g. 16) which may be called something like R0 to R15. These registers are the fastest available memory (faster than the main RAM memory) and are used to perform calculations. Some registers are general purpose and some are special: typically there will be e.g. the FLAGS register which holds various 1bit results of performed operations (e.g. overflow, zero result etc.). Values can be moved between registers and the main memory.
|
||||||
|
|
||||||
|
Instructions are typically written as three-letter abbreviations and follow some unwritten naming conventions so that different assembly languages at least look similar. Common instructions found in most assembly languages are for example:
|
||||||
|
|
||||||
|
- MOV (move): move a number between registers and/or memory.
|
||||||
|
- JMP (jump): unconditional jump to far away instruction.
|
||||||
|
- BEQ (branch if equal): jump if result of previous comparison was equality.
|
||||||
|
- ADD (add): add two numbers.
|
||||||
|
- NOP (no operation): do nothing (used e.g. for delays).
|
||||||
|
- CMP (compare): compare two numbers and set relevant flags (typically for a subsequent conditional jump).
|
||||||
|
|
||||||
|
Assembly languages may offer simple helpers such as macros.
|
13
bloat.md
Normal file
13
bloat.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Bloat
|
||||||
|
|
||||||
|
Bloat is a very wide term that in the context of software and technology means extreme growth of software in terms of source code size, complexity, dependencies, useless features and resource usage, all of which lead to inefficiency, bad-design, bugginess, security vulnerabilities, loss of freedom, obscurity and ugliness. Bloat is bad. Creating bloat is a very, very bad engineering. Unfortunately bloat is absolutely taking over all technology nowadays.
|
||||||
|
|
||||||
|
[Based software](based_software.md), [suckless](suckless.md) and others are trying to address this issue and write software that is good, minimal, safe, efficient and well functioning.
|
||||||
|
|
||||||
|
## Example of Bloat
|
||||||
|
|
||||||
|
- [Web](web.md) since the onset of "web 2.0" has been steadily becoming more and more bloated with things such as Adobe Flash and [JavaScript](javascript.md). By today the situation about web bloat is reaching almost unbearable levels, especially in modern sites such as [YouTube](youtube.md). For a great read see [The Website Obesity Crisis](https://idlewords.com/talks/website_obesity.htm).
|
||||||
|
- Ads, [spyware](spyware.md), [DRM](drm.md), anti-cheats, anti-viruses, anti-repair and other anti-user "features" are bloat.
|
||||||
|
- Desktop environments such as [KDE](kde.md) and [GNOME](gnome.md). The concept of a desktop environment itself is often considered bloat.
|
||||||
|
- [Windows](windows.md).
|
||||||
|
- TODO
|
9
brain_software.html
Normal file
9
brain_software.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# Brain Software
|
||||||
|
|
||||||
|
Brain [software](software.md) is kind of a fun idea of software that runs on the human brain as opposed to a [computer](computer.md). This removes the [dependency](dependency.md) on computers and highly increases freedom. Of course, this also comes with a huge drop of computational power :) However, aside from being a fun idea to explore, this kind of software and "architectures" may become interesting from the perspective of [freedom](free_software.md) and [primitivism](primitivism.md) (especially when the technological [collapse](collapse.md) seems like a real danger).
|
||||||
|
|
||||||
|
Primitive tools helping the brain compute, such as pen and paper or printed out mathematical tables, may be allowed.
|
||||||
|
|
||||||
|
Example of brain software can be the [game](game.html) of [chess](chess.md). Chess masters can easily play the game without a physical chess board, only in their head, and they can play games with each other by just saying the moves out loud. They may even just play games with themselves, which makes chess a deep, entertaining game that can be 100% contained in one's brain. Such game can never be taken away from the person, it can't be altered by corporations, it can't become unplayable on new [hardware](hardware.md) etc., making it free to the greatest extent.
|
||||||
|
|
||||||
|
One may think of a pen and paper computer with its own simple instruction set that allows general purpose programming. This instruction set may be designed to be well interpretable by human and it may be accompanied by tables printed out on paper for quick lookup of operation results -- e.g. a 4 bit computer might provide a 16x16 table with precomputed multiplication results which would help the person execute the multiplication instruction within mere seconds.
|
48
c.md
Normal file
48
c.md
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# C
|
||||||
|
|
||||||
|
C is a low-level, statically typed imperative compiled language, the go-to language of most less retarded software. It is the absolutely preferred language of the [suckless](suckless.md) community as well as of most true experts, for example the [Linux](linux.md) and [OpenBSD](openbsd.md) developers, because of its good minimal design, level of control, uncontested performance and a greatly established and tested status.
|
||||||
|
|
||||||
|
C is usually not considered an easy language to learn because of its low level nature: it requires good understanding of how a computer actually works and doesn't prevent the programmer from shooting himself in the foot. Programmer is given full control (and therefore responsibility). There are things considered "tricky" which one must be aware of, such as undefined behavior of certain operators and raw pointers. This is what can discourage a lot of modern "coding monkeys" from choosing C, but it's also what inevitably allows such great performance.
|
||||||
|
|
||||||
|
# History and Context
|
||||||
|
|
||||||
|
# Standards
|
||||||
|
|
||||||
|
C is not a single language, there have been a few standards over the years since its inception in 1970s. The notable standards and versions are:
|
||||||
|
|
||||||
|
- K&R C: C as described by its inventors in the book *The C Programming Language*, before official standardization. This is kind of too ancient nowadays.
|
||||||
|
- C89/C90 (ANSI/ISO C): First fully standardized version, usable even today.
|
||||||
|
- C95: A minor update of the previous standard, adds wide character support.
|
||||||
|
- C99: Updated standard from the year 1999 striking a great balance between "modern" and "good old". This is a good version to use in LRS programs, but will be a little less supported than C89.
|
||||||
|
- C11: Updated standard from the year 2011. This one is too bloated and isn't worth using.
|
||||||
|
- C17/C18: Yet another update, yet more bloated and not worth using.
|
||||||
|
|
||||||
|
LRS should use C99 or C89 as the newer versions are considered [bloat](bloat.md) and don't have such great support in compilers, making them less portable and therefore less free.
|
||||||
|
|
||||||
|
The standards of C99 and older are considered pretty [future-proof](future_proof.md) and using them will help your program be future-proof as well. This is to a high degree due to C having been established and tested better than any other language; it is one of the oldest languages and a majority of the most essential software is written in C, C compiler is one of the very first things a new hardware platform needs to implement, so C compilers will always be around, at least for historical reasons. C has also been very well designed in a relatively minimal fashion, before the advent of modern feature-creep and and bullshit such as [OOP](oop.md) which cripples almost all "modern" languages.
|
||||||
|
|
||||||
|
# Compilers
|
||||||
|
|
||||||
|
- gcc
|
||||||
|
- clang
|
||||||
|
- tcc
|
||||||
|
|
||||||
|
# Basics
|
||||||
|
|
||||||
|
A simple program in C looks like e.g. like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
TODO
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
You can quickly compile the program from command line like this:
|
||||||
|
|
||||||
|
`gcc -o my_program my_program.c`
|
||||||
|
|
||||||
|
You can replace `gcc` with other compilers (e.g. `clang`, `tcc`, `g++` etc.), they mostly understand the same flags. Some important flags you may want to add:
|
||||||
|
|
||||||
|
- `-O3`: optimize for program speed, greatly speeds up your program (you can also use less aggressive `-O2` and `-O1`)
|
||||||
|
- `-Os`: optimize for smaller program size
|
||||||
|
- `-g`: include debug info, you want this so that debuggers can point to your source code
|
||||||
|
- `-std=c99`: use the C99 standard
|
7
cancer.md
Normal file
7
cancer.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Cancer
|
||||||
|
|
||||||
|
Cancer is similar to [shit](shit.md) but is even worse because it spreads itself and infects anything else it touches (it is a subset of shit).
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
- [shit](shit.md)
|
5
coc.md
Normal file
5
coc.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Code of Conduct
|
||||||
|
|
||||||
|
Code of conduct (COC) is a shitty invention of [SJW](sjw.md)s that dictates how development of specific software should be conducted, generally pushing toxic woke concepts such as forced inclusivity or use of politically correct language. COC is typically placed in the software repository as a `CODE_OF_CONDUCT` file. In practice COCs are used to kick people out of development because of their political opinions expressed anywhere, inside or outside the project, and to push political opinions through software projects.
|
||||||
|
|
||||||
|
Based software must never include any COC, with possible exceptions of anti-COC or parody style COCs, not because we dislike genuine inclusivity, but because we believe COCs are bullshit and mostly harmful as they support bullying, censorship and exclusion of people.
|
28
copyright.md
Normal file
28
copyright.md
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# Copyright
|
||||||
|
|
||||||
|
{ I feel this article needs to start by saying that **copyright is shit**. ~drummyfish }
|
||||||
|
|
||||||
|
Copyright (better called copyrestriction) is one of many types of so called [intellectual property](intellectual_property.md) (IP), i.e. a legal concept that allows ownership of certain kind of information. Copyright specifically allows to own (i.e. restrict other people's rights to) artistic creations such as images, songs or texts, which include source code of computer programs. Copyright is not to be confused with [trademark](trademark.md) or [patent](patent.md). Copyright is symbolized by C in a circle or in brackets: (C).
|
||||||
|
|
||||||
|
When someone creates something that can even remotely be considered art, they automatically have copyright on it, without having to register it anywhere or let it be known anywhere. They then have practically full control over the work and can successfully sue anyone who basically just touches it in any way. Therefore any code without a license attached is implicitly fully owned by its creator (so called "all rights reserved") and can't be used by anyone without permission.
|
||||||
|
|
||||||
|
This current form of copyright (as well as other types of IP such as software patents) has been highly criticized by many people, even those who it's supposed to "protect" (e.g. small game creators). Strong copyright laws basically benefit corporations and "trolls" on the detriment of everyone else. It smothers creativity and efficiency by prohibiting people to use, remix and improve already existing works. Most people are probably for *some* form of copyright but still oppose the current extreme form which is pretty crazy: copyright applies to everything without any registration or notice and last usually 70 years (!!!) **after** the author has died (!!!). This is 100 years in some countries. In some countries it is not even possible to waive copyright to own creations. Some people are against the very idea of copyright (those may either use waivers such as [CC0](cc0.md) or [unlicense](unlicense.md) or protest by not using any licenses and simply ignoring copyright which however will actually discourage other people from reusing their works).
|
||||||
|
|
||||||
|
Prominent critics include [Lawrence Lessig](lessig.md) (who established [free culture](free_culture.md) and [Creative Commons](creative_commons.md)) as a response), [Nina Paley](nina_paley.md) and [Richard Stallman](rms.md).
|
||||||
|
|
||||||
|
Copyright rules differ greatly by country, most notably the US measures copyright length from the publication of the work rather than from when the author died. It is possible for a work to be copyrighted in one country and not copyrighted in another. It is sometimes also very difficult to say whether a work is copyrighted because the rules have been greatly changing (e.g. a notice used to be required for some time), sometimes even retroactively copyrighting public domain works, and there also exists no official database of copyrighted works (you can't safely look up whether your creation is too similar to someone else's). All in all, copyright is a huge mess, which is why we choose [free licenses](free_software.md) and even [public domain](public_domain.md) waivers.
|
||||||
|
|
||||||
|
[Copyleft](copyleft.md) (also share-alike) is a concept standing against copyright, a kind of anti-copyright, invented by [Richard Stallman](rms.md) in the context of [free software](free_software.md). It's a license that grants people the rights to the author's work on the condition that they share its further modification under the same terms, which basically hacks copyright to effectively spread free works like a "virus".
|
||||||
|
|
||||||
|
Copyright does **not** apply to facts (including mathematical formulas) (even though the formulation of them may be copyrighted), ideas (though these may be covered by [patents](patent.md)) and single words or short phrases (these may however still be [trademarked](trademark.md)). As such copyright can't e.g. be applied to game mechanics of a computer [game](game.md) (it's an idea). It is also basically proven that copyright doesn't cover [computer languages](programming_language.md) (Oracle vs Google). Depending on time and location there also exist various peculiar exceptions such as the freedom of panorama for photographs or uncopyrightable utilitarian design. But it's never good to rely on these pecularities as they are specific to time/location and are often highly subjective, fuzzy and debatable. This constitutes a huge legal [bloat](bloat.md) and many time legal unsafety.
|
||||||
|
|
||||||
|
A work which is not covered by copyright (and any other IP) -- which is nowadays pretty rare due to the extent and duration of copyright -- is in the [public domain](public_domain.md).
|
||||||
|
|
||||||
|
[Free software](free_software.md) (and free art etc.) is **not** automatically public domain, it is mostly still copyrighted, i.e. "owned" by someone, but the owner has given some key rights to everyone with a free software license and by doing so minimized or even eliminated the negative effects of full copyright. The owner may still keep the rights e.g. to being properly credited in all copies of the software, which he may enforce in court. Similarly software that is in public domain is **not** automatically free software -- this holds only if source code for this software is available (so that the rights to studying and modifying can be executed).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
38
dependency.md
Normal file
38
dependency.md
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
# Dependency
|
||||||
|
|
||||||
|
Dependency is something your program depends on -- dependencies are bad! Unfortunately they are also unavoidable. We at least try to minimize dependencies as much as possible while keeping our program functioning as intended.
|
||||||
|
|
||||||
|
In [software](software.md) development context we usually talk about software dependencies, typically [libraries](library.md) and other software [packages](package.md). However, there are many other types of dependencies we need to consider when striving for the best programs. Let us list just some of the possible types:
|
||||||
|
|
||||||
|
- [software](software.md)
|
||||||
|
- [libraries](library.md)
|
||||||
|
- [compiler](compiler.md) supporting specific language standard
|
||||||
|
- [build system](build_system.md)
|
||||||
|
- [GUI](gui.md) capability
|
||||||
|
- [operating system](operating_system.md) and its services such as presence of a [window manager](file_system.md), [desktop environment](desktop_environment.md), presence of a [file system](file_system.md) etc.
|
||||||
|
- [Internet](internet.md) connection
|
||||||
|
- [hardware](hardware.md)
|
||||||
|
- [computing resources](computing_resources.md) (sufficient RAM, CPU speed, ...)
|
||||||
|
- [graphics card](gpu.md)
|
||||||
|
- [floating point unit](fpu.md) and other [coprocessors](coprocessor.md)
|
||||||
|
- CPU features such as special instructions
|
||||||
|
- [mouse](mouse.md), [speakers](monitor.md) and other I/O devices
|
||||||
|
- other:
|
||||||
|
- know-how/education: Your program may require specific knowledge, e.g. knowledge of advanced math to be able to meaningfully modify the program, or nonnegligiable amount of time spent studying your codebase.
|
||||||
|
- running cost: e.g. electricity, Internet connection cost
|
||||||
|
- culture: Your program may require the culture to allow what it is presenting or dealing with.
|
||||||
|
|
||||||
|
Good program will take into account all kinds of these dependencies and try to minimize them to offer freedom, stability and safety while keeping its functionality or reducing it only very little.
|
||||||
|
|
||||||
|
Why are dependencies so bad? Some of the reasons are:
|
||||||
|
|
||||||
|
- **less secure** (more [attack surface](attack_surface.md), i.e. potential for vulnerabilities which may arise in the dependencies)
|
||||||
|
- **more buggy** (more [fuck up surface](fuck_up_surface.md))
|
||||||
|
- **more expensive to [maintain](maintenance.md)** (requires someone's constant attention to just keep the dependencies up to date and keeping up with their changing API)
|
||||||
|
- **less [future proof](future_proof.md)** and more **fragile** (your program dies as soon as one of its dependencies, or any dependency of these dependencies)
|
||||||
|
- **less under your control** (in practice it's extremely difficult to modify and maintain a library you use even if it's [free](free_software.md), so you're typically doomed to just accept whatever it does)
|
||||||
|
- **more dangerous [legally](law.md)** (reusing work of other people requires dealing with several to many different licenses with possibly wild conditions and there's always a chance of someone starting to make trouble such as threatening to withdraw a license)
|
||||||
|
|
||||||
|
## How to Avoid Them
|
||||||
|
|
||||||
|
TODO
|
9
faq.md
Normal file
9
faq.md
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# Frequently Asked Questions
|
||||||
|
|
||||||
|
### How does LRS differ from suckless, KISS and similar types of software?
|
||||||
|
|
||||||
|
These sets largely overlap and LRS is often just a slightly different angle of looking at the same things. However LRS does have its specific ideas and areas of focus such as its stress on public domain and legal safety, altruism, anti-capitalism, embracing entertainment software such as games, NOT joining the [productivity cult](productivity_cult.md) etc.
|
||||||
|
|
||||||
|
### Are you retarded?
|
||||||
|
|
||||||
|
Yes, but probably not as much as you.
|
27
free_software.md
Normal file
27
free_software.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Free Software
|
||||||
|
|
||||||
|
Free (as in freedom) software is a type of [software](software.md) that's respecting its users' freedom, generally by availability of its source code and by a license that allows anyone to use, study, modify and share the software. It stands opposed to the [proprietary software](proprietary_software.md). Free software is not to be confused with [freeware](freeware.md) ("gratis", software available for free); although free software is always available for free thanks to its definition, zero price is not its goal. The goal is freedom.
|
||||||
|
|
||||||
|
Free software is also known as *free as in freedom* or *free as in speech* software. It is sometimes equated with [open source](open_source.md), even though open source is fundamentally different, or neutrally labelled FOSS (free and open-source software). Software that is gratis is sometimes called *free as in beer*.
|
||||||
|
|
||||||
|
# Definition
|
||||||
|
|
||||||
|
Free software was originally defined by [Richard Stallman](rms.md) for his [GNU](gnu.md) project. The definition was subsequently adjusted by other groups such as Debian and so nowadays there isn't a completely solid definition. However, all of these definition are very similar and are basically variations and subsets of the original one. The GNU definition of free software is paraphrased as follows:
|
||||||
|
|
||||||
|
Software is considered free if all its users have the rights to:
|
||||||
|
|
||||||
|
0. Use the software for any purpose.
|
||||||
|
1. Study the software. Fpr this source code of the program has to be available.
|
||||||
|
2. Share the software with anyone.
|
||||||
|
3. Modify the software. This modified version can also be shared with anyone.
|
||||||
|
|
||||||
|
The developers of Debian operating system have created their own guidelines (Debian Free Software Guidelines) which respect these points but are worded in more complex terms and further require e.g. non-functional data to be available under free terms as well ([source](https://people.debian.org/~bap/dfsg-faq.html#not_just_code)) which GNU doesn't ([source](https://www.gnu.org/distros/free-system-distribution-guidelines.en.html#non-functional-data)). The definition of open source is yet more complex even though in practice free software is eventually also open source and vice versa.
|
||||||
|
|
||||||
|
# History
|
||||||
|
|
||||||
|
Free software was invented by the great [Richard Stallman](rms.md) in the 1980s. His free software movement inspired later movements such as the [free culture](free_culture.md) movement and the evil [open-source](open_source.md) movement.
|
||||||
|
|
||||||
|
# See Also
|
||||||
|
|
||||||
|
- [open source](open_source.md)
|
||||||
|
- [free culture](free_culture.md)
|
10
fun.md
Normal file
10
fun.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Fun
|
||||||
|
|
||||||
|
Fun is a reward in form of a pleasant feeling which you get after doing something.
|
||||||
|
|
||||||
|
## Things That Are Fun
|
||||||
|
|
||||||
|
- [programming](programming.md)
|
||||||
|
- [games](game.md)
|
||||||
|
- hanging around with friends on the [Island](island.md)
|
||||||
|
- laughing at normies dealing with [bloat](bloat.md)
|
13
future_proof.md
Normal file
13
future_proof.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Future-Proof Technology
|
||||||
|
|
||||||
|
Future-proof technology is technology that is very likely to stay functional for a very long time with minimal to no maintenance. This feature is generally pretty hard to achieve and today's [consoomerist](consumerism.md) society makes the situation much worse by focusing on immediate profit without long-term planning and implementing things such as [bloat](bloat.md) and [planned obsolescence](planned_obsolescence.md).
|
||||||
|
|
||||||
|
A truly good technology is trying to be future-proof because this saves us the great cost of maintenance and reinventing wheels.
|
||||||
|
|
||||||
|
Despite the extremely bad situation not all hope is lost. At least in the world of [software](software.md) future-proofing can be achieved by:
|
||||||
|
|
||||||
|
- Building on top of already well established and time-tested technology such as the [C language](c.md). Choosing to use the older standards with fewer features helps greatly as the less-feature-rich versions of languages are always more supported (for example there is many more C89 compilers than C17 compilers).
|
||||||
|
- Minimizing [dependencies](dependency.md) to absolute bare minimum. Dependencies are likely the single greatest cause of software death because if one of your dependencies dies, you whole project dies, and this goes recursively for all of the dependencies of the dependencies etc. This usually means software [libraries](library.md) but also goes for other software such as [build systems](build_system.md) and also [hardware](hardware.md) dependencies such as requiring GPU, floating point, special instructions etc.
|
||||||
|
- Practicing [minimalism](minimalism.md) and reducing complexity which minimizes the maintenance cost and therefore raises the probability of someone being able to fix any issues that arise over time.
|
||||||
|
- Making hard dependencies soft, i.e. optional. For example if your software is using GPU for real-time rendering, it should also offer a [software rendering](sw_rendering.md) option in case GPU is not present or is unsupported.
|
||||||
|
- Avoiding the hyped "modern" "feature-rich" ([bloated](bloat.md)) technology arising from the consumerist market.
|
23
game.md
Normal file
23
game.md
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# Game
|
||||||
|
|
||||||
|
Game (also gayme) is software whose main purpose is to be played and entertain the user. Sadly most games are [proprietary](proprietary.md).
|
||||||
|
|
||||||
|
Among [KISS](kiss.md) software proponents there is a disagreement about whether games are legit software or just a [meme](meme.md) and harmful kind of entertainment. The proponents of the latter argue something along the lines that technology is only for getting work done, that games are for virgins, that they hurt productivity, are an unhealthy addiction, wasted time and effort etc. Those who like games see them as a legitimate form of relaxation, a form of art and a way of advancing technology. The truth is that developing games leads to improvement of other kinds of software, e.g. for rendering, physics simulation or virtual reality.
|
||||||
|
|
||||||
|
Despite the disagreement about games' validity, all sane people agree on one thing: the typical AAA games produced by big corporations are harmful, [bloated](bloat.md) and designed to be malicious. These are never going to be considered good from our perspective.
|
||||||
|
|
||||||
|
PC games are mostly made for and played on [MS Windows](windows.md) which is still the "gaming OS", even though in recent years we've seen a boom of "[Linux](linux.md) gaming", possibly thanks to Windows getting shittier and shittier every year. However, most games, even when played on Linux, are still [proprietary](proprietary.md).
|
||||||
|
|
||||||
|
A small number of games nowadays come with a [free](free_software.md) engine, which is either official (often retroactively freed by its developer in case of older games) or developed by volunteers. Example of the former are the engines of ID games (Doom, Quake), example of the latter can be [OpenMW](openmw.md) (a free engine for TES: Morrowind) or [Mangos](mangos.md) (a free server for World of Warcraft). Console [emulators](emulator.md) (such as of Playstation or Gameboy) can also be considered a free engine for playing proprietary games.
|
||||||
|
|
||||||
|
Yet a smaller number of games are completely free (in the sense of [Debian](debian.md)'s free software definition), including both the engine and game assets. These games are called *free games* or *libre games* and many of them are clones of famous proprietary games. Examples of these include [SuperTuxKart](stk.md), [Minetest](minetest.md), [Xonotic](xonotic.md), [FLARE](flare.md) or [Anarch](anarch.md). There exists a wiki for libre games at https://libregamewiki.org and a developer forum at https://forum.freegamedev.net/.
|
||||||
|
|
||||||
|
Some games are pretty based as they don't even require GUI and are only played in the text shell (either using TUI or purely textual I/O) -- these are called TTY games or command line games. This kind of games may be particularly interesting for [minimalists](minimalism.md), hobbyists and developers with low (zero) budget, little spare time and/or no artistic skills. Roguelike games are especially popular here; there sometimes even exist GUI frontends which is pretty neat -- this demonstrates how the [Unix philosophy](unix_philosophy.md) can be applied to games.
|
||||||
|
|
||||||
|
Another kind of cool games are computer implementation of pre-computer games, for example [chess](chess.md), backgammon, go or various card games. Such games are very often well tested and fine-tuned gameplay-wise, popular with active communities and therefore fun, yet simple to program with many existing free implementations and good AIs (e.g. GNU chess, GNU go or [Stockfish](stockfish.md)).
|
||||||
|
|
||||||
|
## Legal Matter
|
||||||
|
|
||||||
|
Thankfully gameplay cannot (yet) be copyrighted (or otherwise "protected" by "intellectual property") so we can happily clone proprietary games and so free them. However this must be done carefully as there is a possibility of stepping on other mines, for example violating a *trade dress* (looking too similar visually) or a trade mark (for example you cannot use the word *tetris* as it's owned by some shitty company).
|
||||||
|
|
||||||
|
Trademarks have been known to cause problems in the realm of libre games, for example in the case of Nexuiz which had to rename to Xonotic after its original creator copyrighted the name and started to make trouble.
|
11
global_discussion.md
Normal file
11
global_discussion.md
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# Global Discussion
|
||||||
|
|
||||||
|
This is a place for general discussion about anything related to our thing. To comment just edit-add your comment. I suggest we use a tree-like structure as shows this example:
|
||||||
|
|
||||||
|
- Hello, this is my comment. ~drummyfish
|
||||||
|
- Hey, this is my response. ~drummyfish
|
||||||
|
|
||||||
|
If the tree gets too big we can create a new tree under a new heading.
|
||||||
|
|
||||||
|
## General Discussion
|
||||||
|
|
28
island.md
Normal file
28
island.md
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# Welcome to the Island!
|
||||||
|
|
||||||
|
This is the freedom island where we live! Feel free to build your house on any free spot. Planting trees and making landscape works are allowed too.
|
||||||
|
|
||||||
|
```
|
||||||
|
____
|
||||||
|
__X/ '-X_
|
||||||
|
'-~-. ____./ i X '-__
|
||||||
|
__.-' /' XX i \_ '-~-.
|
||||||
|
___,--' x x_/' Xi O '-_
|
||||||
|
___/ __-'' X X( i x '-._
|
||||||
|
_-' i i [T] xX x ''-._
|
||||||
|
( O : ixx \
|
||||||
|
'- \_ )
|
||||||
|
''-__ '. ____ ____-'
|
||||||
|
''--___ [D] ; x \/ ''---'
|
||||||
|
''--__ ;xX \__
|
||||||
|
\ iX ''-__
|
||||||
|
'-~-. / i O '--__
|
||||||
|
| i \
|
||||||
|
'-~-. \__ )
|
||||||
|
'-~-. ''--___ ____/
|
||||||
|
''--__________--''
|
||||||
|
|
||||||
|
D: drummyfish's house
|
||||||
|
|
||||||
|
T: The Temple, it has nice view of the sea and we go meditate here, it's a nice walk
|
||||||
|
```
|
23
license.md
Normal file
23
license.md
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# License
|
||||||
|
|
||||||
|
A license is a legal text by which we grant others some rights that we hold over certain work. For our thing a license is what enables us to legally implement [free (as in freedom) software](free_software.md): we attach a license to our program that says that we grant to everyone the basic freedom rights to our software with optional conditions (which are not in conflict with free software definition, e.g. we may require [attribution](attribution.md) or [copyleft](copyleft.md)). We call these licenses *free licenses* ([open source](open_source.md) licenses work the same way). Of course, there also exist [non-free](proprietary.md) licenses called [EULAs](eula.md), but we stay away from these.
|
||||||
|
|
||||||
|
Some most notable free licenses for software include (FSF: FSF approved, OSI: OSI approved, LRS: approved by us, short: is the license short?):
|
||||||
|
|
||||||
|
| license | type | FSF | OSI | LRS |short|
|
||||||
|
| ----------------------- | ----------------------- | --- | --- | --- | --- |
|
||||||
|
| [Apache 2](apache.md) | permissive, conditions |**+**|**+**| | - |
|
||||||
|
| [AGPL](agpl.md) | network copyleft |**+**|**+**| | - |
|
||||||
|
| [BSD (0,1,2,3)](bsd.md) | permissive |**+**|**+**| |**+**|
|
||||||
|
| [BOML](boml.md) | permissive | - | - | |**+**|
|
||||||
|
| [CC0](cc0.md) | PD waiver, 0 conditions |**+**| - |**+**| - |
|
||||||
|
| [GPLv2, GPLv3](gpl.md) | copyleft (strong) |**+**|**+**| - | - |
|
||||||
|
| [LGPL](lgpl.md) | copyleft (weak) |**+**|**+**| - | - |
|
||||||
|
| [MIT](mit.md) | permissive, credit |**+**|**+**|**+**|**+**|
|
||||||
|
|[Unlicense](unlicense.md)| PD waiver, 0 conditions |**+**|**+**| |**+**|
|
||||||
|
| [WTFPL](wtfpl.md) | permissive, fun |**+**| - | |**+**|
|
||||||
|
| [zlib](zlib.md) | permissive |**+**|**+**| |**+**|
|
||||||
|
|
||||||
|
Some most notable free licenses for general artworks include:
|
||||||
|
|
||||||
|
TODO
|
37
lrs.md
Normal file
37
lrs.md
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# Less Retarded Software
|
||||||
|
|
||||||
|
*here shall be the concensus definition of LRS*
|
||||||
|
|
||||||
|
The definition here is not strict but rather fuzzy, it is in a form of ideas, style and common practices that together help us subjectively identify software as less retarded.
|
||||||
|
|
||||||
|
[Software](software.md) is less retarded if it adheres, to a high-degree (not necessarily fully), to the following principles:
|
||||||
|
|
||||||
|
- Having the goal of **truly** selflessly helping to maximum extent all living beings who may use the software without any slight intent of taking advantage of them in any way.
|
||||||
|
- Trying to follow the [Unix philosophy](unix_philosophy.md) (do one thing well, use text interfaces, ...).
|
||||||
|
- Trying to follow the [suckless](suckless.md) philosophy (configs as source files, distributing in source form, ...).
|
||||||
|
- Being [minimalist](minimalism.md) ([single compilation unit](single_compilation_unit.md), [header-only](header_only.md) libraries, no build systems, no [OOP](oop.md) languages, ...), countercomplex.
|
||||||
|
- Being [free software](free_software.md) legally but ALSO practically (well commented, not bloated and obscured etc.).
|
||||||
|
- Being [free culture](free_culture.md), i.e. LRS programs are free as a whole, including art assets, data etc.
|
||||||
|
- Minimizing [dependencies](dependency.md), even those such as standard library or relying on OS concepts such as files or threads, even indirect ones such as build systems and even non-software ones (e.g. avoiding [floating point](float.md), GPU, 64bit etc.).
|
||||||
|
- Very portable, non-discriminating, i.e. being written in a portable language (C etc.), using as little resources as possible (RAM, CPU, ...) and so on.
|
||||||
|
- Future-proof, not controlled by anyone (should follow from other points).
|
||||||
|
- [Hacking](hacking.md) friendly and inviting to improvements and customization.
|
||||||
|
- Built on top of other LRS technology such as the [C99](c.md) language, Unix OS, our own libraries etc.
|
||||||
|
- Simple permissive licensing (being suckless legally) with great preference of [public domain](public_domain.md), e.g. with [CC0](cc0.md).
|
||||||
|
- Elegant by its simple, well thought-through solutions.
|
||||||
|
- No bullshit such as [codes of conduct](coc.md), tricky licensing conditions etc.
|
||||||
|
|
||||||
|
## List of Software Considered Less Retarded
|
||||||
|
|
||||||
|
Add your shit here.
|
||||||
|
|
||||||
|
- Anarch
|
||||||
|
- dwm
|
||||||
|
- OpenBSD
|
||||||
|
- raycastlib
|
||||||
|
- SAF
|
||||||
|
- small3dlib
|
||||||
|
- st
|
||||||
|
- surf
|
||||||
|
- tcc
|
||||||
|
- vim
|
7
luke_smith.md
Normal file
7
luke_smith.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Luke Smith
|
||||||
|
|
||||||
|
Luke Smith is an Internet tech mini-celebrity known for making videos about [suckless](suckless.org) software, independent living in the woods and here and there about historical/political topics. He is bald, about 30 years old and lives in a rural location in Florida (exact coordinates have been doxxed but legally can't be shared here). He has a podcast called *Not Related!* in which he discusses things such as alternative historical theories. He has a minimalist 90s style website https://lukesmith.xyz/ and his own [peertube](peertube.md) instace where his videos can be watched if one doesn't want to watch them on [YouTube](youtube.md). He is the author of [LARBS](larbs.md) and minimalist recipe site https://based.cooking/.
|
||||||
|
|
||||||
|
His videos consist of normie-friendly tutorials on suckless software, rants, independent living, live-streams and podcasts.
|
||||||
|
|
||||||
|
Luke studies PhD in linguistics but is very critical of academia. He is a right-winder and talks in meme phrases which makes his "content" kind of enjoyable. He despises such things as [soydevry](soydev.md), [bloat](bloat.md), "consoomerism" and soyence.
|
11
main.md
Normal file
11
main.md
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# Welcome To The Less Retarded Wiki
|
||||||
|
|
||||||
|
This is a Wiki for [less retarded software](lrs.md) (LRS) and related topics.
|
||||||
|
|
||||||
|
**Before contributing please read the [rules & style](wiki_style.md)!**
|
||||||
|
|
||||||
|
Pay us a visit on the [Island](island.md)!
|
||||||
|
|
||||||
|
## What Is Less Retarded Software
|
||||||
|
|
||||||
|
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) and [free](free_software.md) software. LRS standing opposed to all shittiness of so called ["modern"](modern_software.md) software. For more details see the article about [LRS](lrs.md).
|
5
maintenance.md
Normal file
5
maintenance.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Maintenance
|
||||||
|
|
||||||
|
Maintenance is [shitty](shit.md) [work](work.md) whose goal is just to keep a program functioning without improving it. Maintenance is extremely expensive, tiresome and enslaves humans to machines -- we try to minimize the maintenance cost as much as possible! Good programs should go to great lengths in effort to becoming highly [future-proof](future_proof.md) and [suckless](suckless.md) in order to avoid maintenance.
|
||||||
|
|
||||||
|
Typical "[modern](modern.md)" capitalist/consumerist software (including most [free software](free_software)) is ridiculously bad at avoiding maintenance -- such programs will require one to many programmers maintaining it every single day and will become unrunnable in matter of months to years without this constant maintenance that just wastes time of great minds. I don't know what to say, this is just plainly wrong.
|
18
make_html.sh
Executable file
18
make_html.sh
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Creates HTML version of the wiki.
|
||||||
|
|
||||||
|
echo "making HTML"
|
||||||
|
rm -rf html
|
||||||
|
mkdir html
|
||||||
|
|
||||||
|
for f in *.md; do
|
||||||
|
f2=$(echo "html/$f" | sed "s/\.md/.html/g")
|
||||||
|
|
||||||
|
echo "<html><head><title>LRS Wiki</title></head><body><h1>based_wiki</h1><a href=\"main.html\">main page</a><hr />" > $f2
|
||||||
|
markdown $f | sed "s/\.md\"/.html\"/g" >> $f2
|
||||||
|
echo "<hr/><p>All content available under <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0</a> (public domain).</p></body></html>" >> $f2
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "<html><head></head><body><a href="main.html">Go to main page.</a></body></html>" >> html/index.html
|
||||||
|
|
||||||
|
echo "done"
|
3
math.md
Normal file
3
math.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Mathematics
|
||||||
|
|
||||||
|
Mathematics is the best [science](science.md) (yes, it is a formal science), in fact it's the only true science that can actually prove things.
|
5
minimalism.md
Normal file
5
minimalism.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Technological Minimalism
|
||||||
|
|
||||||
|
Technological minimalism is a philosophy of designing technology to be as simple as possible while still achieving given goal.
|
||||||
|
|
||||||
|
Up until recently in history every engineer would tell you that *the better machine is that with fewer moving parts*. This still seems to hold in mathematics, an area inhabited by the smartest people, where there is a tendency to look for the most minimal equations. Science also knows this rule as the Occam's razor.
|
19
oop.md
Normal file
19
oop.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Object-Oriented Programming
|
||||||
|
|
||||||
|
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 and downright built into programming languages which often force users to apply this abstraction to every single program which creates [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.
|
||||||
|
|
||||||
|
You should learn OOP but only to see why it's bad (and to actually understand 99% of code written nowadays).
|
||||||
|
|
||||||
|
## Principles
|
||||||
|
|
||||||
|
## Why It's Shit
|
||||||
|
|
||||||
|
- For simple programs (which most programs should be) OOP is an unnecessarily high and overly complex abstraction.
|
||||||
|
- Great number of the supposed "features" and design-patterns (setters/getters, singletons, inheritance, ...) turned out to actually be anti-patterns and burdens.
|
||||||
|
- OOP as any higher abstraction very often comes with overhead and performance loss as well as more complex [compilers](compiler.md).
|
||||||
|
- The relatively elegant idea of pure OOP didn't catch up and the practically used OOP languages are abomination hybrids of imperative and OOP paradigms.
|
||||||
|
- TODO
|
||||||
|
|
||||||
|
## History
|
27
optimization.md
Normal file
27
optimization.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Optimization
|
||||||
|
|
||||||
|
Optimization means making a program more efficient (in terms of some metric such as speed or memory usage) while preserving its functionality.
|
||||||
|
|
||||||
|
## Rules & Tips
|
||||||
|
|
||||||
|
- Tell your compiler to actually optimize (`-O3`, `-Os` etc.).
|
||||||
|
- gprof is a utility you can use to profile your code.
|
||||||
|
- `<stdint.h>` has types such as `uint_fast32_t` which picks the fastest type of at least given width on given platform.
|
||||||
|
- Keywords such as `inline`, `static` and `const` can help compiler optimize well.
|
||||||
|
- Optimize the bottlenecks! Optimizing in the wrong place is a complete waste of time. If you're optimizing a part of code that's taking 1% of your program's run time, you will never speed up your program by more than that 1% even if you speed up the specific part by 10000%.
|
||||||
|
- You can almost always trade space (memory usage) for time (CPU demand) and vice versa and you can also fine-tune this. You typically gain speed by precomputation (look up tables, more demanding on memory) and memory with compression (more demanding on CPU).
|
||||||
|
- Avoid branches (ifs). They break prediction and instruction preloading and are often source of great performance losses. Don't forget that you can compare and use the result of the operation without using any branching (e.g. `x = (y == 5) + 1;`).
|
||||||
|
- Use iteration instead of recursion if possible (calling a function is pretty expensive).
|
||||||
|
- You can use good-enough approximations instead of completely accurate calculations, e.g. taxicab distance instead of Euclidean distance, and gain speed or memory without trading.
|
||||||
|
- Operations on static data can be accelerated with accelerating structures (indices for database lookups, spatial grids for collision checking, ...).
|
||||||
|
- Use powers of 2 whenever possible, this is efficient thanks to computers working in binary. Not only may this help nice utilization and alignment of memory, but mainly multiplication and division can be optimized by the compiler to mere bit shifts which is a tremendous speedup.
|
||||||
|
- Write cache-friendly code (minimize long jumps in memory).
|
||||||
|
- Compare to 0 if possible. There's usually an instruction that just checks the zero flag which is faster than loading and comparing two arbitrary numbers.
|
||||||
|
- Consider moving computation from run time to compile time. E.g. if you make a resolution of your game constant (as opposed to a variable), the compiler will be able to partially precompute expressions with the display dimensions and so speed up your program (but you won't be able to dynamically change resolution).
|
||||||
|
- On some platforms such as ARM the first arguments to a function are passed via registers, so it's better to have few parameters in functions.
|
||||||
|
- Optimize when you already have a working code. As Donald Knuth put it: "premature optimization is the root of all evil".
|
||||||
|
- Use your own caches, for example if you're frequently working with some database item you better pull it to memory and work with it there, then write it back once you're done (as opposed to communicating with the DB there and back).
|
||||||
|
- Single compilation unit (one big program without linking) can help compiler optimize because it can see the whole code at once, not just its parts.
|
||||||
|
- Search literature for algorithms with better complexity class (sorts are a nice example).
|
||||||
|
- For the sake of embedded platforms consider avoiding floating point as that is often painfully slowly emulated in software.
|
||||||
|
- Early branching can bring a speed up (instead of branching inside the loop create two versions of the loop and branch in front of them).
|
3
productivity_cult.md
Normal file
3
productivity_cult.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Productivity Cult
|
||||||
|
|
||||||
|
Productivity cult is one of [modern](modern.md) capitalist 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 slave to the system.
|
3
proprietary.md
Normal file
3
proprietary.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Proprietary Software
|
||||||
|
|
||||||
|
Proprietary software is any software that is not [free (as in freedom) software](free_software.md). This kind of software is basically always non-based, in fact it is mostly commercial software designed to abuse its user in some way. Examples of proprietary software are [MS Windows](windows.md), [MacOS](macos.md), [Adobe Photoshop](photoshop.md) and almost every [game](game.md).
|
7
rms.md
Normal file
7
rms.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Richard Stallman
|
||||||
|
|
||||||
|
The great doctor Richard Matthew Stallman (RMS, born 1953 in New York) is one of the biggest figures in software history, the founder of the [GNU project](gnu.md), [free software foundation](fsf.md), inventor of [free software](free_software.md) and the author of a famous text editor [emacs](emacs.md).
|
||||||
|
|
||||||
|
He has a beautifully minimalist website http://www.stallman.org where he actively comments on current news and issues, even though regarding software he isn't too concerned about [bloat](bloat.md) (judging by the GNU software and his own creation, the emacs editor).
|
||||||
|
|
||||||
|
He is a weird person, having been recorded eating dirt from his feet before giving a lecture. In the book *Free as in Freedom* he admits he might be autistic.
|
3
science.md
Normal file
3
science.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Science
|
||||||
|
|
||||||
|
*Not to be confused with [soyence](soyence.md)*.
|
13
shit.md
Normal file
13
shit.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Shit
|
||||||
|
|
||||||
|
Shit is something that's awfully bad.
|
||||||
|
|
||||||
|
## List of Things That Are Shit
|
||||||
|
|
||||||
|
- [MS Windows](windows.md)
|
||||||
|
- [OOP](oop.md) (the ugly overused kind)
|
||||||
|
- [systemd](systemd.md)
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
- [cancer](cancer.md)
|
2
soydev.md
Normal file
2
soydev.md
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# Soydev
|
||||||
|
|
3
soyence.md
Normal file
3
soyence.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Soyence
|
||||||
|
|
||||||
|
Soyence is a mainstream propaganda and [business](business.md) claiming itself to be [science](science.md). It's what typical reddit atheists believe is science. It's what Neil De Grass Tyson tells you is science.
|
27
suckless.md
Normal file
27
suckless.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Suckless
|
||||||
|
|
||||||
|
Suckless, software that sucks less, is a type of [software](software.md), as well as an organization (http://suckless.org/), that tries to adhere to a high technological minimalism, freedom and hackability, and opposes so called [bloat](bloat.md) which has been creeping into most "modern" software. It is related to [Unix philosophy](unix_philosophy.md) and [KISS](kiss.md).
|
||||||
|
|
||||||
|
Notable suckless promoters include [Luke Smith](luke_smith.md) and [Mental Outlaw](mental_outlaw.md).
|
||||||
|
|
||||||
|
## Attributes
|
||||||
|
|
||||||
|
- Extreme minimalism.
|
||||||
|
- Configuration of software is part of its source code (`config.h`) and change of this configuration requires recompiling the software (which is extremely easy with suckless software). This removes the need for dealing with config files which requires special libraries, file systems and extra code.
|
||||||
|
- Mainly using two programming languages: C for compiled programs amd POSIX shell for scripting.
|
||||||
|
- Forking by default, software is distributed in source format, every user is supposed to create a personal customized fork and compile the software himself.
|
||||||
|
- Mods (extension/addons) are implemented and distributed as patch files.
|
||||||
|
- Permissive licensing, usually MIT.
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
TODO :)
|
||||||
|
|
||||||
|
## Projects
|
||||||
|
|
||||||
|
Notable projects developed by the suckless group include:
|
||||||
|
|
||||||
|
- dwm
|
||||||
|
- st
|
||||||
|
- dmenu
|
||||||
|
- surf
|
5
systemd.md
Normal file
5
systemd.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Systemd
|
||||||
|
|
||||||
|
Systemd is a pretty bad, [bloated](bloat.md), [anti-Unix](unix_philosophy.md), [free-licensed](free_software.md) "software suite" used for initialization of an [operating system](os.md) and handling services like loggging in or managing network connections. It is a so called [PID 1](pid1.md) process. Systemd has been highly criticised by the proponents of [suckless](suckless.md) and [LRS](lrs.md) and even normies for its bloat, anti-Unix-philosophy design, [feature creep](feature_creep.md), security vulnerabilities and other stuff. Unfortunately it is being adopted by many [Linux](linux.md) distributions including [Arch Linux](arch.md) and [Debian](debian.md).
|
||||||
|
|
||||||
|
For more detailed bashing of systemd see e.g. https://nosystemd.org/.
|
7
wiki_authors.md
Normal file
7
wiki_authors.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# LRS Wiki Authors
|
||||||
|
|
||||||
|
Contributors, list yourselves here if you have made at least one contribution. This helps keep track of people for legal reasons etc.
|
||||||
|
|
||||||
|
Contributors to this wiki include:
|
||||||
|
|
||||||
|
- Miloslav Číž aka drummyfish (https://www.tastyfish.cz)
|
24
wiki_style.md
Normal file
24
wiki_style.md
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# Wiki Style
|
||||||
|
|
||||||
|
This outlines the style and rules of this Wiki that should ensure "quality" and consistency. You should read this before contributing.
|
||||||
|
|
||||||
|
If you contribute, add yourself to [wiki authors](wiki_authors.md)! You can also join us on the [Island](island.md).
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
1. **Everything is public domain** under CC0 to which all contributors agree. No one owns what we write here.
|
||||||
|
2. **No fair use** or even unfrair use. We want this Wiki to be as free as possible and don't thread the fine legal lines. That means you can't directly include anything on this Wiki if it's copyrighted, **even if it's under a free license**. So generally **avoid any copy pasting and rather try to write everything yourself**.
|
||||||
|
3. **Stay on topic**, this Wiki is **CENSORED**: spam, too much of completely non-related text, shitty things and things going against our thing will not be included.
|
||||||
|
|
||||||
|
## Style
|
||||||
|
|
||||||
|
- Don't line-break paragraphs (a pragraph is on a single line). The reasoning is that a text manually formatted to specific width is hard to edit. It's easier to switch to auto-line breaking in your editor.
|
||||||
|
- Each page shall start with a heading (which may not correspond to article file name).
|
||||||
|
- Filenames of articles should use a lowercrase snake_case.
|
||||||
|
- This isn't Wikipedia, memes and opinions are allowed (and welcome). However don't do things like hard pushing political and other ideas that aren't immediately tied to our thing (e.g. Trump good and Trump bad has nothing to do with our tech). We want this to be about good technology and we invite all people regardless of political opinions to create our kind of technology (of course some politics inevitably follows from our ideas).
|
||||||
|
- Images: TODO (what images can we link to? how many images do we even want here?).
|
||||||
|
- You can leave comments right in the text of articles e.g. like this: {I disagree with this shit. ~drummyfish}.
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Basically the purpose of this wiki is to have fun and also create a coherent and consistent philosophy of a truly good software and technology.
|
5
windows.md
Normal file
5
windows.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Microsoft Windows
|
||||||
|
|
||||||
|
Microsoft Windows is a series of extremely bad, [bloated](bloat.md), malicious and badly designed [proprietary](proprietary.md) [operating systems](os.md). DO NOT USE.
|
||||||
|
|
||||||
|
## Versions
|
Loading…
Reference in a new issue