master
Miloslav Ciz 8 months ago
parent ff131e2f76
commit 62a042b858

@ -61,13 +61,13 @@ The following is a list of software usually considered a good, typical example o
- [Neural networks](neural_network.md) aka "AI" that is forced into everything nowadays.
- ...
## Small Bloat
## Medium And 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 which is nevertheless considered unnecessarily complex by some experts and/or idealists and/or hardcore minimalists, including [us](lrs.md).
Small bloat is a subject of popular [jokes](joke.md) such as "OMG he uses a unicode font -- BLOAT!!!". These are good jokes, it's nice 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. In context of today's PCs using a Unicode font is not really an issue for performance, memory consumption or anything else, 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](dependency.md) on Unicode.
Small bloat includes for example:
Small/medium 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)
- 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)
@ -83,6 +83,7 @@ Small bloat includes for example:
- [operating system](os.md) ([bare metal](bare_metal.md) is better)
- [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)
- [X11](x11.md) (just pure screen drawing is better)
- [database](database.md) software (plain files are better)
- [C](c.md) (something in between C and [brainfuck](brainfuck.md) would is likely ideal, e.g. [comun](comun.md) or [Forth](forth.md))
- [glibc](glibc.md), [gcc](gcc.md), [clang](clang.md) etc. (better alternatives are [tcc](tcc.md), [musl](musl.md), [uclibc](uclibc.md) etc.)
@ -111,9 +112,9 @@ Small bloat includes for example:
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. Examples include:
- [clothes](clothes.md)
- house decoration
- house decorations
- [cars](car.md)
- using languages other than [English](english.md)
- using languages other than [English](english.md) or [Esperanto](esperanto.md)
- TODO: more
## See Also

@ -2,7 +2,7 @@
*[Love](love.md) everyone, help [selflessly](selflessness.md).*
Welcome to [Less Retarded Wiki](lrs_wiki.md), an [encyclopedia](encyclopedia.md) only I can edit. But you can [fork](fork.md) it, it is [public domain](public_domain.md) under [CC0](cc0.md) (see [wiki rights](wiki_rights.md)) :) Holy [shit](shit.md), I'm gonna get [cancelled](cancel_culture.md) hard as soon as [SJWs](sjw.md) find out about this. Until then, let's enjoy the ride. THERE IS NO [MODERATION](moderation.md), I can do whatever I want here lol. I love this. INB4 "[hate speech](hate_speech.md)" website { [LMAO](lmao.md) [codeberg](codeberg.md) and [Gitlab](gitlab.md) have already banned us :D [Wikipedia](wikipedia.md)/WM Commons also now banned me globally for "opinions expressed on my website". Marginalia search seems to blacklist us too now. ~drummyfish } CONGRATULATIONS, you have discovered the one true, undistorted and unbiased view of the world -- this is not a [joke](jokes.md), this wiki contains pure [truth](truth.md) and the solution to most of the issues that plague our current society. Do you have what it takes to [unretard](unretard.md) yourself? We wish you a nice journey :)
Welcome to [Less Retarded Wiki](lrs_wiki.md), an [encyclopedia](encyclopedia.md) only I can edit. But you can [fork](fork.md) it, it is [public domain](public_domain.md) under [CC0](cc0.md) (see [wiki rights](wiki_rights.md)) :) Holy [shit](shit.md), I'm gonna get [cancelled](cancel_culture.md) hard as soon as [SJWs](sjw.md) find out about this. Until then, let's enjoy the ride. THERE IS NO [MODERATION](moderation.md), I can do whatever I want here lol. I love this. INB4 "[hate speech](hate_speech.md)" website { [LMAO](lmao.md) [codeberg](codeberg.md) and [Gitlab](gitlab.md) have already banned us :D [Wikipedia](wikipedia.md)/WM Commons also now banned me globally for "opinions expressed on my website". ~drummyfish } CONGRATULATIONS, you have discovered the one true, undistorted and unbiased view of the world -- this is not a [joke](jokes.md), this wiki contains pure [truth](truth.md) and the solution to most of the issues that plague our current society. Do you have what it takes to [unretard](unretard.md) yourself? We wish you a nice journey :)
DISCLAIMER: All opinions expressed here are facts.

@ -11,9 +11,11 @@ for f in *.md; do
fname=$(echo "$f" | sed "s/\.md//g")
f2="txt/${fname}.txt"
pandoc -f markdown -t plain $f | iconv -f utf-8 -t ascii//TRANSLIT >> $f2
cat $f | cmark-gfm -e table > __tmp.html && links -html-numbered-links 1 -dump __tmp.html | sed "s/file:\/\/.*less_retarded_wiki\///g" >> $f2
done
rm __tmp.html
echo "making single TXT"
echo "LESS RETARDED WIKI" > lrs.txt

@ -1,17 +1,17 @@
# Unix Philosophy
Unix philosophy is one of the most important and essential approaches to programming which advocates great [minimalism](minimalism.md) and is best known by the saying that **a program should only do one thing and do it well**. Unix philosophy is a collective wisdom, a set of recommendations evolved during the development of one of the earliest [operating systems](os.md) called [Unix](unix.md), hence the name. Unix philosophy advocates simplicity, clarity, modularity, reusability and composition of larger programs out of smaller programs rather than designing huge monolithic programs as a whole. Unix philosophy, at least partially, lives on in many project and Unix-like operating systems such as [Linux](linux.md) (though Linux is more and more distancing from Unix), has been wholly adopted by groups such as [suckless](suckless.md) and [LRS](lrs.md) (us), and is even being expanded in such projects as [plan9](plan9.md).
Unix philosophy is one of the most important and essential approaches to [programming](programming.md) (and by extension all [technology](tech.md) design) which advocates great [minimalism](minimalism.md) and is best known by the saying that **a program should only do one thing and do it well**. Unix philosophy is a collective wisdom, a set of recommendations evolved during the development of one of the earliest [operating systems](os.md) called [Unix](unix.md), hence the name. Unix philosophy advocates simplicity, clarity, modularity, reusability and composition of larger programs out of smaller programs rather than designing huge monolithic programs as a whole. Unix philosophy, at least partially, lives on in many project and Unix-like operating systems such as [Linux](linux.md) (though Linux is more and more distancing from Unix), has been wholly adopted by groups such as [suckless](suckless.md) and [LRS](lrs.md) (us), and is even being expanded in such projects as [plan9](plan9.md).
In 1978 [Douglas McIlroy](mcilroy.md) has written a short overview of the Unix system (*UNIX Time-Sharing System*) in which he gives the main points of the system's style; this can be seen as a summary of the Unix philosophy (the following is paraphrased):
1. **Each program should do one thing and do it well**. Overcomplicating existing programs isn't good; for new functionality create a new program.
2. **Output of a program should be easy to interpret by another program**. In Unix programs are chained by so called [pipes](pipe.md) in which one program sends its output as an input to another, so a programmer should bear this in mind. [Interactive](interactive.md) programs should be avoided if possible.
2. **Output of a program should be easy to interpret by another program**. In Unix programs are chained by so called [pipes](pipe.md) in which one program sends its output as an input to another, so a programmer should bear this in mind. [Interactive](interactive.md) programs should be avoided if possible. Make your program a [filter](filter.md) if possible, as that exactly helps this case.
3. **Program so that you can test early, don't be afraid to throw away code and rewrite it from scratch**.
4. **Write and use tools**, even if they're [short-lived](throwaway_script.md), they're better than manual work. Unix-like systems are known for their high [scriptability](script.md).
This has later been condensed into: do one thing well, write programs to work together, make programs communicate via text streams, a universal interface.
**Example**: maybe the most common practical example that can be given is [piping](pipe.md) small [command line](cli.md) utility programs; in Unix there exist a number of small programs that do *only one thing but do it well*, for example the [`cat`](cat.md) program that only displays the content of a file, the [`grep`](grep.md) program that searches for patterns in text etc. In a command line we may use so called [pipes](pipe.md) to chain some of these simple programs into more complex processing pipelines. Let's say we want to for example automatically list all first and second level headings on given webpage and write them out alphabetically sorted. We can do it with a command such as this one:
**Simple example**: maybe the most common practical example that can be given is [piping](pipe.md) small [command line](cli.md) utility programs; in Unix there exist a number of small programs that do *only one thing but do it well*, for example the [`cat`](cat.md) program that only displays the content of a file, the [`grep`](grep.md) program that searches for patterns in text etc. In a command line we may use so called [pipes](pipe.md) to chain some of these simple programs into more complex processing pipelines. Let's say we want to for example automatically list all first and second level headings on given webpage and write them out alphabetically sorted. We can do it with a command such as this one:
```
curl "https://www.tastyfish.cz/lrs/main.html" | grep "<h[12]>.*</h[12]>" | sed "s/[^>]*> *\([^<]*\) *<.*/\1/g" | sort
@ -26,9 +26,9 @@ Welcome To The Less Retarded Wiki
What Is Less Retarded Software
```
In the command the pipes (`|`) chain multiple programs together so that the output of one becomes the input of the next. The first command, [`curl`](curl.md), downloads the [HTML](html.md) content of the webpage and passes it to the second command, [`grep`](grep.md), which filters the text and only prints lines with headings, this is passed to [`sed`](sed.md) that removes the HTML code and the result is passed to `sort` that sorts the lines alphabetically -- as this is the last command, the result is then printed. This is fast, powerful and very flexible way of processing data for anyone who knows the Unix tools. Notice the relative simplicity of each command and how each works with text -- the universal communication interface.
In the command the pipes (`|`) chain multiple programs together so that the output of one becomes the input of the next. The first command, [`curl`](curl.md), downloads the [HTML](html.md) content of the webpage and passes it to the second command, [`grep`](grep.md), which filters the text and only prints lines with headings, this is passed to [`sed`](sed.md) that removes the HTML code and the result is passed to `sort` that sorts the lines alphabetically -- as this is the last command, the result is then printed out. This is fast, powerful and very flexible way of processing data for anyone who knows the Unix tools. Notice the relative simplicity of each command and how each one works as a **[text](text.md) [filter](filter.md)**; text is a universal communication interface and behaving as a filter makes intercommunication easy and efficient. A filter simply takes an input stream of data and outputs another stream of data; it ideally works on-the-go (without having to load whole input in order to produce the output), which has great many advantages, for example requiring only a small amount of memory (which may become significant when we are running many programs at once in the pipeline) and decreasing [latency](latency.md) (the next pipe stage may start processing the data before the previous stage finishes). When you're writing a program, such as for example a [compression](compression.md) tool, make it work like this.
Compare this to the opposite [Window philosophy](windows_philosophy.md) in which combining programs into collaborating units is not intended or even purposefully prevented, and therefore very difficult, slow and impractical to do -- such programs are designed for manually performing some predefined actions, e.g. painting pictures with a mouse, but aren't made to collaborate or be automatized, they can rarely be used in unintended, inventive ways needed for [hacking](hacking.md).
Compare this to the opposite [Window philosophy](windows_philosophy.md) in which combining programs into collaborating units is not intended, is possibly even purposefully prevented and therefore very difficult, slow and impractical to do -- such programs are designed for manually performing some predefined actions, mostly using [GUI](gui.md), e.g. painting pictures with a mouse, but aren't made to collaborate or be automatized, they can rarely be used in unintended, inventive ways needed for powerful [hacking](hacking.md). Getting back to the example of a compression tool, on Windows such a program would be a large GUI program that requires a user to open up a file dialog, manually select a file to compress, which would then probably go on to load the whole file into memory, perform compression there, and the write the data back to some other file. Need to use the program on a computer without graphical display? Automatize it to work with other programs? Run it from a script? Run it 10000 at the same time with 10000 other similar programs? Bad luck, Windows philosophy doesn't allow this.
**Watch out! Do not misunderstand Unix philosophy.** There are many extremely dangerous cases of misunderstanding Unix philosophy by [modern](modern.md) wannabe programmers. One example is the hilarious myth about "[React](react.md) following Unix philosophy" ([LMAO this](http://img.stanleylieber.com/src/20872/img/small.1527773532.png)), supposedly the "devs" think that having billion of dependencies or focusing on doing one huge thing ([GUI](gui.md)) somehow implies Unix philosophy -- **nothing based on [JavaScript](js.md) can ever follow Unix philosophy!** Unix philosophy can NOT be built on top of non-unix philosophy technology, and focusing on a very broad goal does not mean doing one thing.
@ -36,8 +36,10 @@ Compare this to the opposite [Window philosophy](windows_philosophy.md) in which
## See Also
- [LRS](lrs.md)
- [Unix](unix.md)
- [minimalism](minimalism.md)
- [suckless](suckless.md)
- [KISS](kiss.md)
- [Windows philosophy](windows_philosophy.md)
- [Windows philosophy](windows_philosophy.md)
- [hacking](hacking.md)

@ -16,7 +16,7 @@ Usenet was the pre-[web](www.md) web, kind of like an 80s [reddit](reddit.md) wh
## Where To Freely Browse Usenet
Search for Usenet archives, I've found some sites dedicated to this, also [Internet archive](internet_archive.md) has some newsgroups archived. [Google](google.md) has Usenet archives on a website called "Google groups" (now sadly requires login). There is a nice archive at https://www.usenetarchives.com. Possibly guys from Archive Team can help (https://wiki.archiveteam.org/index.php/Usenet, https://archive.org/details/usenet, ...). See also http://www.eternal-september.org.
Search for Usenet archives, I've found some sites dedicated to this, also [Internet archive](internet_archive.md) has some newsgroups archived. [Google](google.md) has Usenet archives on a website called "Google groups" (now sadly requires login). There is a nice archive at https://www.usenetarchives.com. Possibly guys from Archive Team can help (https://wiki.archiveteam.org/index.php/Usenet, https://archive.org/details/usenet, ...). See also http://www.eternal-september.org. There is an archive from 1981 accessible through [gopher](gopher.md) at gopher://gopher.quux.org/1/Archives/usenet-a-news.
## See Also

Loading…
Cancel
Save