master
Miloslav Ciz 9 months ago
parent 1788b2a081
commit 42f1360321

@ -1,6 +1,8 @@
# Encyclopedia
TODO
Encyclopedia (also encyclopaedia, cyclopedia or cyclopaedia) is a large [book](book.md) (or a series of books) providing structured summary of wide knowledge in one or many fields (such as [mathematics](math.md), [history](history.md), engineering, general knowledge etc.), usually in a form of alphabetically ordered articles on terms used in the field. Paper encyclopedias are often printed in several volumes as their scope is too great for a single book. The largest and most famous encyclopedia to date is the online [Wikipedia](wikipedia.md) created by volunteers in [free culture](free_culture.md) spirit, however Wikipedia suffers from significant issues such as [censorship](censorship.md), high political propaganda and low quality of writing, therefore it is important to also stay interested in other encyclopedias such as Britannica or [LRS wiki](lrs_wiki.md).
**Similar terms:** encyclopedias are similar to **dictionaries** and these works often overlap (many encyclopedias call themselves dictionaries); the main difference is that a dictionary focuses on providing linguistic information about the terms and has shorter term definitions, while encyclopedias has longer articles (which however limits the total number of terms it may contain). Encyclopedias are also a subset of so called **reference works**, i.e. works that serve to provide [information](information.md) and reference to it (other kinds of reference works being e.g. world maps or [API](api.md) references). A **universal/general** encyclopedia is one that focuses on human knowledge at wide, as opposed to an encyclopedia that focuses on one specific field of knowledge.
## Notable/Nice Encyclopedias
@ -10,24 +12,25 @@ Here is a list of notable encyclopedias, focused on general knowledge English la
| name | year | legal status | format | ~articles | comment |
| ------------------------------ | ----- | ---------------- | ----------- | --------- | ---------------------------------------------------------------------------------------------------------- |
| Britannica 11th edition | 1910 | PD (old) | 29 vol. | 40K | legendary enc., digitized (gutenberg) |
| Britannica 11th edition | 1910 | PD (old) | 29 vol. | 40K | legendary enc., digitized (gutenberg), uncensored facts on race etc. |
| Britannica online |...now | proprietary | online | 130K | bloated, high quality articles, ads |
| [Citizendium](citizendium.md) |2006...|proprietary? (NC) | online | 18K | Wikipedia alternative, censored, faggots have unclear license |
|[Conservaedia](conservapedia.md)|2006...| proprietary | online | 52K | American fascist wiki, has basic factual errors |
| Desk Reference Encyclopedia | 1995 | proprietary | 1 vol. 800p | 200K? | by James Hughes, nice illustrations, quality articles { I bought this. ~drummyfish } |
| Desk Reference Encyclopedia | 1995 | proprietary | 1 vol. 800p | 200K? | by James Hughes, nice illustrations, quality articles { I bought this, it's nice. ~drummyfish } |
| Encyclopedia Dramatica |2004...| PD (CC0) | online | 15K | informal/fun/"offensive" but valuable info (on society, tech, ...), basically no censorship, no propaganda |
| Illustrated Family Encyclopedia| 1997 | proprietary | 2 vol. 920p | 5K | kid-friendly, nice pictures, USA bias, piratable |
|[Infogalactic](infogalactic.md) | | CC BY-SA | online | 2M | Wikipedia fork, no SJW censorship, FOR PROFIT (you can buy article control lol), can't make accounts |
|[Infogalactic](infogalactic.md) |2016...| CC BY-SA | online | 2M | Wikipedia fork, no SJW censorship, FOR PROFIT (you can buy article control lol), can't make accounts |
| [LRS wiki](lrs_wiki.md) |2021...| PD (CC0) | online/elec.| 500 | best encyclopedia, focused on tech/society, no censorship |
| [Metapedia](metapedia.md) | | GFDL | online | 7K | Wikipedia fork, online, no SJW censorship, ATM limited account creation, "pro-European" fascism |
| [Metapedia](metapedia.md) |2006...| GFDL | online | 7K | Wikipedia fork, online, no SJW censorship, ATM limited account creation, "pro-European" fascism |
|Microsoft [Encarta](encarta.md) |...2009| proprietary | electronic | 62K | Micro$oft enc., low quality articles (errors), MS propaganda (no free software etc. lol), is on archive.org|
| Simple English Wikipedia |2001...| CC BY-SA | online | 200K | Wikipedia with simpler language and simpler explanations, censored |
| The Nuttall Encyclopaedia | 1907 | PD (old) | 1 vol. | 16K | short articles, oldschool, 16K articles, digitized (gutenberg) |
| [Vikidia](vikidia.md) | | CC BY-SA | online | 4K | "Wikipedia for kids", probably as censored as Wikipedia |
| The Nuttall Encyclopaedia | 1907 | PD (old) | 1 vol. | 16K | short articles, oldschool, digitized (gutenberg) |
| [Vikidia](vikidia.md) |2006...| CC BY-SA | online | 4K | "Wikipedia for kids", probably as censored as Wikipedia |
|Webster's Unabridged Dictionary |1864 | PD (old) | paper | 476K | short descriptions, digitized (gutenberg) |
| [Wikipedia](wikipedia.md) |2001...| CC BY-SA | online | 6M | largest and most famous, EXTREME PSEUDOLEFTIST CENSORSHIP AND POLITICAL PROPAGANDA, free culture |
| Old Wikipedia | 2001 | GFDL | online | 19K | archived old Wikipedia, less censorship, https://nostalgia.wikipedia.org |
| Pears' Cyclopedia | 1897 | PD (old) | 1 vol. 740p | | contains dictionary, general knowl. maps, reference etc., scanned on archive.org |
| The World Book |1917...| proprietary | 22 vol. | 17K | best selling print enc., large, probably high quality |
| The World Book 1917 |1917 | PD (old) | 8 vol. | 3K | nicely readable |
| Uncyclopedia |2005...| proprietary (NC) | online | 37K | parody, [fun](fun.md) enc. |

@ -0,0 +1,3 @@
# Explicit
Explicit is something that's directly expressed; it is the opposite of [implicit](implicit.md).

@ -0,0 +1,3 @@
# Implicit
Implicit means something that's assumed unless stated otherwise; it is the opposite of [explicit](explicit.md). Though not the same, the term is similar to *default*; for example an implicit/default background [color](color.md) of some image format may be defined as [white](white.md), meaning that unless background color is stated, we suppose the background to be white. Implicit values may be important e.g. for saving space -- imagine we have some dataset in which 90% of values are [zero](zero.md); then it is convenient to state zero to be the implicit value and not store such values, by which we'll save 90% of space.

@ -1,14 +1,16 @@
# Library
[Software](software.md) library is program code that's not meant to run on its own but rather to be used by other programs, i.e. it is a helpful collection of preprogrammed code that's meant to be [reused](reusability.md). A library provides resources such as [functions](function.md), [macros](macro.md), [classes](class.md) or [constants](constant.md) that are normally related to solving some specific class of problems, so e.g. there are [GUI](gui.md) libraries, [audio](audio.md) libraries, [mathematical](math.md) libraries etc. Libraries exist mostly to prevent [reinventing wheels](reinventing_wheel.md) by only ever implementing the code once so that next time we can simply reuse it (respecting the [DRY](dry.md) principle), but they also e.g. help assure others are using an already well tested code, they help to implement [modularity](modularity.md) etc. Examples of libraries are the [standard C library](clib.md), [SDL](sdl.md) or [JQuery](jquery.md). Libraries are not to be confused with [frameworks](framework.md) which are larger, more [bloated](bloat.md) environments.
[Software](software.md) library (often shortened to just *lib*) is program code that's not meant to run on its own but rather to be used by other programs, i.e. it is a helpful collection of preprogrammed code that's meant to be [reused](reusability.md). A library provides resources such as [functions](function.md), [macros](macro.md), [classes](class.md) or [constants](constant.md) that are normally related to solving some specific class of problems, so e.g. there are [GUI](gui.md) libraries, [audio](audio.md) libraries, [mathematical](math.md) libraries etc. Libraries exist mostly to prevent [reinventing wheels](reinventing_wheel.md) by only ever implementing the code once so that next time we can simply reuse it (respecting the [DRY](dry.md) principle), but they also e.g. help assure others are using an already well tested code, they help to implement [modularity](modularity.md) etc. Examples of libraries are the [standard C library](clib.md), [SDL](sdl.md) or [JQuery](jquery.md). Libraries are not to be confused with [frameworks](framework.md) which are larger, more [bloated](bloat.md) environments.
In [Unix](unix.md) environments there is a convention for library [packages](package.md) to start with the `lib` prefix, so e.g. SDL library is named `libsdl` etc.
**Standard library** (stdlib) is a term that stands for the set of libraries that officially come with given [programming language](programming_language.md) -- these libraries usually offer very basic functionality (such as [I/O](io.md) and basic [math](math.md)) and are required to always be present on every system.
If a programmer wants to use a specific library, he usually has to first somehow [install](install.md) it (if it's not installed already, usually a library is some kind of software [package](package.md)) and then *include* it in his program with a specific command (words like `include`, `using` or `import` are commonly used). Then he is able to use the resources of the library. Depending on the type of the library he may also need to [link](linking.md) the library code after [compilation](compiler.md) and possibly distribute the library files along with his program.
If a programmer wants to use a specific library, he usually has to first somehow [install](install.md) it (if it's not installed already, usually a library is some kind of software [package](package.md)) and then *include* it in his program with a specific command (words like `include`, `using` or `import` are commonly used). Then he is able to use the resources of the library. Depending on the type of the library he may also need to [link](linking.md) the library code after [compilation](compiler.md) and possibly distribute the library files along with his program. A more [KISS](kiss.md) approach is for a library to simply be a code that's somehow copy-paste included in the main program (see single header libraries etc.).
You will often hear that a library has certain [API](api.md) -- this is the interface of the library consisting of the elements via which programmer uses the library, mostly the [functions](function.md) the library offers. API is what the programmer interacts with; the rest is library internals (its [implementation](implementation.md)) that's usually supposed to not be touched and stay a bit hidden (see [encapsulation](encapsulation.md)). If a programmer wants to know the library API, he wants to know the names of the functions, what [parameters](parameter.md) they take etc. Sometimes there may be multiple libraries with the same API but different internal implementations, this is nice because these libraries can be easily [drop-in-replaced](drop_in.md).
As a programmer you will encounter the term **library [API](api.md)** -- this is the interface of the library consisting of the elements via which programmer uses the library, mostly the [functions](function.md) the library offers. API is what the programmer interacts with; the rest is library internals (its [implementation](implementation.md)) that's usually supposed to not be touched and stay a bit hidden (see [encapsulation](encapsulation.md)). If a programmer wants to know the library API, he wants to know the names of the functions, what [parameters](parameter.md) they take etc. Sometimes there may be multiple libraries with the same API but different internal implementations, this is nice because these libraries can be easily [drop-in-replaced](drop_in.md). The library API is usually part of its documentation -- when learning a new library *X*, you want to search the internet for something like *X library API reference* to see what functions it offers.
In a specific [programming language](programming_language.md) it IS generally possible to use a library written in a different language, though it may be more difficult to achieve.
In a specific [programming language](programming_language.md) it IS generally possible to use a library written in a different language, though it may be more difficult to achieve -- see language [bindings](binding.md) and [wrappers](wrapper.md).
We generally divide libraries to two types:
@ -21,6 +23,8 @@ Many times a library can have both static and dynamic version available, or the
TODO: example
**Header only** or **single header** library is a kind of [keep-it-simple](kiss.md) library that's wholly implemented in a single header (.h) file -- this is kind of a [hack](hacking.md) going against "official recommendations" as header files aren't supposed to contain implementation code, just declarations, however single header libraries are [suckless](suckless.md)/[LRS](lrs.md), convenient and very easy to use, as they don't have to be [linked](linking.md) and are nicely self-contained, distributed in one nice file. A traditional library would consist of one or more header (.h) files and one or more implementation (.c) files; such library has to be compiled on its own and then linked to the program that uses it -- the idea behind this was to compile the library only once and so save time on recompiling it again and again; however this justification is invalid if our library is simple enough and compiles very quickly (which it always should, otherwise we are dealing with badly designed [bloat](bloat.md)). A single header library can therefore just be included and [just works](just_werks.md), without any extra hassle -- yes, its code recompiles every time the program is compiled, but as stated, it doesn't hurt if our library is well designed and therefore simple. Single header libraries often include the option (via some #define macro) to include just the declaration or both declarations and implementation code -- this is useful if our main program is composed of multiple source files and needs to be linked. [LRS](lrs.md) libraries, such as [small3dlib](small3dlib.md) or [raycastlib](raycastlib.md), are of course single header libraries.
## LRS Libraries
TODO

@ -1,6 +1,6 @@
# Linux
Linux is a "[FOSS](foss.md)" [unix-like](unix_like.md) [operating system](operating_system.md) [kernel](kernel.md), probably the most successful and famous non-[proprietary](proprietary.md) kernel. Linux is NOT a whole operating system, only its basic part -- for a whole operating system more things need to be added, such as some kind of [user interface](ui.md) and actual user programs, and this is what [Linux distributions](linux_distro.md) do (there are dozens, maybe hundreds of these) -- Linux distributions, such as [Debian](debian.md), [Arch](arch.md) or [Ubuntu](ubuntu.md) are complete operating systems (but beware, most of them are not fully [FOSS](foss.md)). Linux is one of the biggest collaborative programming projects, as of now it has more than 15000 contributors.
Linux is a "[FOSS](foss.md)" [unix-like](unix_like.md) [operating system](operating_system.md) [kernel](kernel.md), probably the most successful and famous non-[proprietary](proprietary.md) kernel. Linux is NOT a whole operating system, only its basic part -- for a whole operating system more things need to be added, such as some kind of [user interface](ui.md) and actual user programs (so called [userland](userland.md)), and this is what [Linux distributions](linux_distro.md) do (there are dozens, maybe hundreds of these) -- Linux distributions, such as [Debian](debian.md), [Arch](arch.md) or [Ubuntu](ubuntu.md) are complete operating systems (but beware, most of them are not fully [FOSS](foss.md)). Linux is one of the biggest collaborative programming projects, as of now it has more than 15000 contributors.
Linux is written in the [C](c.md) language, specifically the old C89 standard, as of 2022 (there seem to be plans to switch to a newer version). This is of course good.

@ -10,7 +10,7 @@ In connection to software the word *portable* also has one other meaning used ma
In short: use [abstraction](abstraction.md) to not get tied to any specific platform (separate [frontend](frontend.md) and [backend](backend.md)), [keep it simple](kiss.md), minimize [dependencies](dependency.md) (minimize use of [libraries](library.md) and requiring hardware such as [floating point](float.md) unit or a [GPU](gpu.md), have [fallbacks](fallback.md)), write efficient, [simple](kiss.md) code (lower hardware demands will support more platforms), avoid platform-specific features (don't write in [assembly](assembly.md) as that's specific to each CPU, don't directly use [Linux](linux.md) [syscalls](syscall.md) as these are specific to Linux etc.).
Remember, portability is about making it easy for a programmer to take your program and make it run elsewhere, so portability is about constantly putting oneself in the shoes of someone else with a very different computer and asking questions such as "how hard will it be to make this work if this library isn't available?". Even things that are supposed or commonly expected to be present on all platforms, such as a file system or a raster screen, may not be present on some computers -- always remember this.
Remember, portability is about making it easy for a programmer to take your program and make it run elsewhere, so portability is kind of a mindset, it is about constantly putting oneself in the shoes of someone else with a very different computer and asking questions such as "how hard will it be to make this work if this library isn't available?". Even things that are supposed or commonly expected to be present on all platforms, such as a file system or a raster screen, may not be present on some computers -- always remember this.
**Do NOT use big frameworks/engines** -- it is one of the greatest misconceptions among many inexperienced programmers to think portable software is created with big frameworks, such as the [Godot](godot.md) engine or the [QT](qt.md) framework, which can "single click" export/deploy software to different platforms. This will merely achieve creating a badly [bloated](bloat.md) multiplatform program that's completely dependent on the framework itself which drags along hundreds of [dependencies](dependency.md) and wastes computing resources (RAM, CPU, storage, ...) which are all factors directly contradicting portability. If you for example create a snake game in Godot, you won't be able to port it to [embedded](embedded.md) devices or devices without an operating system even though the snake game itself is simple enough to run on such devices -- the game drags along the whole Godot engine which is so huge, complex and hardware demanding that it prevents the simple game from running on simple hardware.

@ -3,13 +3,13 @@
Sodevs are incompetent wanna-be programmers that usually have these characteristics:
- Being [pseudoleftist](left_right.md) (fascist) political activists pushing [tranny software](tranny_software.md) and [COCs](coc.md) while actually being mainstream centrists in the tech world (advocating "[open-source](open_source.md)" instead of [free_software](free_software.md), being okay with [proprietary](proprietary.md) software, [bloat](bloat.md) etc.).
- Trying to be "cool", having friends, wearing T-shirts with "coding jokes", having tattoos, piercing and colored hair (also trimmed bear in case of males).
- Trying to be "cool", having friends and even spouses and kids, wearing T-shirts with "coding jokes", having tattoos, piercing and colored hair (also trimmed bear in case of males).
- Only being hired in tech for a no-brainer job such as "coding websites" or because of diversity quotas.
- Being actually bad at programming, using meme high-level languages like [JavaScript](javascript.md), [Python](python.md) or [Rust](rust.md).
- Being actually bad at programming, using meme high-level languages like [JavaScript](javascript.md), [Python](python.md) or [Rust](rust.md). { I shit you not, I learned from a friend who lives in India that "universities" there produce "security experts" who don't even have to know any programming and math. They just learn some sysadmin stuff and installing antiviruses, without having any clue about how encryption works etc. These people get regular degrees. Really makes me wanna kys myself. ~drummyfish }
- Using a [Mac](mac.md).
- Thinking they're experts in technology because they are familiar with the existence of [Linux](linux.md) (usually some mainstream distro such as [Ubuntu](ubuntu.md)) and can type `cd` and `ls` in the terminal.
- Being only briefly aware of the tech culture, telling big-bang-theory level jokes (*sudo make sandwich*, 42 hahahahahahaha).
- Being highly active on social networks, probably having a pixel-art portrait of their ugly face on their profile.
- Believing in and engaging in [capitalism](capitalism.md), believing corporations such as [Microsoft](microsoft.md), wanting to create "startups", being obsessed with [productivity](productivity_cult.md), inspirational quotes and masturbating to tech "visionaries" like [Steve Jobs](steve_jobs.md).
- Being only briefly aware of the tech culture, telling big-bang-theory level jokes (*sudo make sandwich*, [42](42.md) hahahahahahaha).
- Being highly active on social networks, probably having a pixel-art portrait of their ugly face and "personal pronouns" on their profile.
- Believing in and engaging in [capitalism](capitalism.md), believing corporations such as [Microsoft](microsoft.md), wanting to create "startups", being obsessed with [productivity](productivity_cult.md), inspirational quotes and masturbating to tech "visionaries" like [Steve Jobs](steve_jobs.md). The "rebels" among these are advocating [FOSS](foss.md), however they always promote huge [bloat](bloat.md) and de-facto [capitalist software](capitalist_software.md) which is no different from proprietary software.
- Using buzzwords like "solution", "orchestration" etc.
- ...
Loading…
Cancel
Save