Update
This commit is contained in:
parent
0d8f2a5fea
commit
b35242f273
17 changed files with 58 additions and 31 deletions
|
@ -4,7 +4,7 @@ Assembly (also ASM) is, for any given hardware computing platform ([ISA](isa.md)
|
|||
|
||||
**Assembly is NOT a single language**, it differs for every architecture, i.e. every model of CPU has potentially different architecture, understands a different machine code and hence has a different assembly (though there are some standardized families of assembly like x86 that work on wide range of CPUs); therefore **assembly is not [portable](portability.md)** (i.e. the program won't generally work on a different type of CPU or under a different [OS](os.md))! And even the same kind of assembly language may have several different [syntax](syntax.md) formats which may differ in comment style, order of writing arguments and even instruction abbreviations (e.g. x86 can be written in [Intel](intel.md) and [AT&T](at_and_t.md) syntax). For the reason of non-portability (and also for the fact that "assembly is hard") you shouldn't write your programs directly in assembly but rather in a bit higher level language such as [C](c.md) (which can be compiled to any CPU's assembly). However you should know at least the very basics of programming in assembly as a good programmer will come in contact with it sometimes, for example during hardcore [optimization](optimization.md) (many languages offer an option to embed inline assembly in specific places), debugging, reverse engineering, when writing a C compiler for a completely new platform or even when designing one's own new platform. **You should write at least one program in assembly** -- it gives you a great insight into how a computer actually works and you'll get a better idea of how your high level programs translate to machine code (which may help you write better [optimized](optimization.md) code) and WHY your high level language looks the way it does.
|
||||
|
||||
**OK, but why doesn't anyone make a portable assembly?** Well, people do, they just usually call it a [bytecode](bytecode.md) -- take a look at that. [C](c.md) is portable and low level, so it is often called a "portable assembly", though it still IS significantly higher in abstraction and won't usually give you the real assembly vibes. [Forth](forth.md) may also be seen as close to such concept.
|
||||
**OK, but why doesn't anyone make a portable assembly?** Well, people do, they just usually call it a [bytecode](bytecode.md) -- take a look at that. [C](c.md) is portable and low level, so it is often called a "portable assembly", though it still IS significantly higher in abstraction and won't usually give you the real assembly vibes. [Forth](forth.md) may also be seen as close to such concept. ACTUALLY [Dusk OS](duskos.md) has something yet closer, called [Harmonized Assembly Layer](hal.md) (see https://git.sr.ht/~vdupras/duskos/tree/master/fs/doc/hal.txt).
|
||||
|
||||
The most common assembly languages you'll encounter nowadays are **[x86](x86.md)** (used by most desktop [CPUs](cpu.md)) and **[ARM](arm.md)** (used by most mobile CPUs) -- both are used by [proprietary](proprietary.md) hardware and though an assembly language itself cannot (as of yet) be [copyrighted](copyright.md), the associated architectures may be "protected" (restricted) e.g. by [patents](patent.md) (see also [IP cores](ip_core.md)). **[RISC-V](risc_v.md)** on the other hand is an "[open](open.md)" alternative, though not yet so wide spread. Other assembly languages include e.g. [AVR](avr.md) (8bit CPUs used e.g. by some [Arduinos](arduino.md)) and [PowerPC](ppc.md).
|
||||
|
||||
|
|
2
cache.md
2
cache.md
|
@ -10,7 +10,7 @@ A cache is related and/or exploits some observations and concepts related to com
|
|||
|
||||
- **principle of locality**: Computers (/CPUs) tend to more often than not access data that are close to each other in memory, i.e. a CPU doesn't typically make [random](randomness.md) jumps in memory but rather e.g. reads a sequence of bytes one after another from an [array](array.md) or [struct](struct.md). For this reason when a CPU pulls something out of memory, there is a high probability of accessing an address that is nearby to this memory next time -- a cache helps us get ready for this by prefetching this nearby data and having it ready for very
|
||||
fast access.
|
||||
- **[memory](memory.md) hierarchy**: Mostly because of the principle of locality computer memory is divided into different levels, a chain of memories that get progressively further away from the CPU, increasing their size (decreasing price for capacity) as they get further away but also decreasing their speed. Here a cache can be seen as the closest memory to the CPU, i.e. being the smallest, most expensive but also fastest memory. By extension we can see that RAM can in many cases be seen as a "cache" for the hard drive, hard drive can be seen as "cache" for the network (after all web browsers ARE caching websites into files on the disk) etc.
|
||||
- **[memory](memory.md) hierarchy**: Mostly because of the principle of locality computer memory is divided into different levels, a chain of memories that get progressively further away from the CPU, increasing their size (decreasing price for capacity) as they get further away but also decreasing their speed. Here a cache can be seen as the closest memory to the CPU (except for the [registers](register.md)), i.e. being the smallest, most expensive but also fastest memory. By extension we can see that RAM can in many cases be seen as a "cache" for the hard drive, hard drive can be seen as "cache" for the network (after all web browsers ARE caching websites into files on the disk) etc.
|
||||
- **[dynamic programming](dynamic_programming.md)**: Dynamic programming is a programming technique revolving around remembering already calculated results so that we don't have to compute them again in the future -- this is basically what caches do, they remember results we obtained in relatively expensive way so that next time we can get them cheaper.
|
||||
- ...
|
||||
|
||||
|
|
1
cc0.md
1
cc0.md
|
@ -14,6 +14,7 @@ TODO
|
|||
|
||||
- software:
|
||||
- much of [LRS](lrs.md) sofware: [Anarch](anarch.md), [small3dlib](small3dlib.md), [raycastlib](raycastlib.md), [SAF](saf.md), [comun](comun.md), ...
|
||||
- [Dusk OS](duskos.md)
|
||||
- ...
|
||||
- other assets:
|
||||
- many things on [Wikimedia Commons](wikimedia_commons.md)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Compression
|
||||
|
||||
Compression means encoding [data](data.md) (such as images or texts) in a different way so that the data takes less space (memory) while keeping all the important [information](information.md), or, in plain terms, it usually means "making files smaller". Compression is pretty important so that we can utilize memory or bandwidth well -- without it our hard drives would be able to store just a handful of videos, internet would be slow as hell due to the gigantic amount of transferred data and our [RAM](ram.md) wouldn't suffice for things we normally do. There are many [algorithms](algorithm.md) for compressing various kinds of data, differing by their complexity, performance, efficiency of compression etc. The reverse process to compression (getting the original data back from the compressed data) is called **decompression**. The ratio of the compressed data size to the original data size is called **compression ratio** (the lower, the better). The science of data compression is truly huge and complicated AF, here we'll just mention some very basics. Also watch out: compression algorithms are often a [patent](patent.md) mine field.
|
||||
Compression means encoding [data](data.md) (such as images or texts) in a different way so that the data takes less space (memory) while keeping all the important [information](information.md), or, in plain terms, it usually means "making files smaller". Compression is pretty important so that we can utilize memory or [bandwidth](bandwidth.md) well -- without it our hard drives would be able to store just a handful of videos, internet would be slow as hell due to the gigantic amount of transferred data and our [RAM](ram.md) wouldn't suffice for things we normally do. There are many [algorithms](algorithm.md) for compressing various kinds of data, differing by their complexity, performance, efficiency of compression etc. The reverse process to compression (getting the original data back from the compressed data) is called **decompression**. The ratio of the compressed data size to the original data size is called **compression ratio** (the lower, the better). The science of data compression is truly huge and complicated AF, here we'll just mention some very basics. Also watch out: compression algorithms are often a [patent](patent.md) mine field.
|
||||
|
||||
{ I've now written a tiny LRS compression library/utility called [shitpress](shitpress.md), check it out at https://codeberg.org/drummyfish/shitpress. It's fewer than 200 LOC, so simple it can nicely serve educational purposes. The principle is simple, kind of a dictionary method, where the dictionary is simply the latest output 64 characters; if we find a long word that occurred recently, we simply reference it with mere 2 bytes. It works relatively well for most data! ~drummyfish }
|
||||
|
||||
|
@ -10,7 +10,7 @@ Compression means encoding [data](data.md) (such as images or texts) in a differ
|
|||
|
||||
Let's keep in mind compression is not applied just to files on hard drives, it can also be used e.g. in RAM to utilize it more efficiently.
|
||||
|
||||
Why don't we compress everything? Firstly because compressed data is slow to work with, it requires significant CPU time to compress and decompress data, it's a kind of a space-time tradeoff (we gain more storage space for the cost of CPU time). Secondly compressed data is more prone to [corruption](corruption.md) because redundant information (which can help restoring corrupted data) is removed from it -- in fact we sometimes purposefully do the opposite of compression and make our data bigger to protect it from corruption (see e.g. [error correcting](error_correction.md) codes, [RAID](raid.md) etc.). And last but not least, many data can hardly be compressed or are so small it's not even worth it.
|
||||
Why don't we compress everything? Firstly because compressed data is slow to work with, it requires significant CPU time to compress and decompress data, it's a kind of a space-time tradeoff (we gain more storage space for the cost of CPU time). Compression also [obscures](obscurity.md) data, for example compressed text file will typically no longer be human readable, any code wanting to work with such data will have to include the nontrivial decompression code. Compressed data is also more prone to [corruption](corruption.md) because redundant information (which can help restoring corrupted data) is removed from it -- in fact we sometimes purposefully do the opposite of compression and make our data bigger to protect it from corruption (see e.g. [error correcting](error_correction.md) codes, [RAID](raid.md) etc.). And last but not least, many data can hardly be compressed or are so small it's not even worth it.
|
||||
|
||||
The basic division of compression methods is to:
|
||||
|
||||
|
|
13
copyfree.md
Normal file
13
copyfree.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Copyfree
|
||||
|
||||
Copyfree Initiative is yet another [nonprofit](nonprofit.md) group trying to create and maintain its own definition and standardization of ["free as in freedom"](free_software.md). Its website is https://copyfree.org/, the symbol they use is F in a circle. Similarly to e.g. [FSF](fsf.md) copyfree maintains a list of approved and rejected [licenses](license.md); the main characteristics of the group are great opposition of [copyleft](copyleft.md) in favor of [permissive](permissive.md) licenses, which is good, however the group justifies its operation by "helping [business](business.md)", i.e. it's most likely just another unethical [capitalist](capitalism.md) organization that will ultimately stand against people and once/if becomes successful will sell the its soul to the highest bidder. Copyfree was founded by Chad Perrin and has existed at least since 2007 (according to internet archive).
|
||||
|
||||
## See Also
|
||||
|
||||
- [FSF](fsf.md)
|
||||
- [OSI](osi.md)
|
||||
- [suckless](suckless.md)
|
||||
- [GNG](gng.md)
|
||||
- [Creative Commons](creative_commons.md)
|
||||
- [Bitreich](bitreich.md)
|
||||
- [LRS](lrs.md)
|
2
cos.md
2
cos.md
|
@ -1,3 +1,3 @@
|
|||
# Cosine
|
||||
|
||||
TODO
|
||||
Cosine (shortened *cos*) is an important mathematical function; for more see the article about [sine](sin.md).
|
|
@ -20,4 +20,4 @@ In 2019 drummyfish has written a "manifesto" of his ideas called **Non-Competiti
|
|||
|
||||
He likes many things such as animals, peace, freedom, programming, [math](math.md) and [games](game.md) (used to play [Xonotic](xonotic.md) and [OpenArena](openarena.md), even though he despises [competitive](competition.md) behavior in real life). He plays piano and drums a little bit and tries to pick up new things like [chess](chess.md) or language learning.
|
||||
|
||||
**Does drummyfish have [divine intellect](terry_davis.md)?** Hell no, but thanks to his extreme tendency for isolation, great curiosity and obsession with truth he is possibly the only man on Earth completely immune to propaganda, he can see the world as it is, not as it is presented, so he feels it is his moral duty to share what he is seeing. He is able to overcome his natural dumbness and low [IQ](iq.md) by tryharding and sacrificing his social and sexual life so that he can program more. If drummyfish can learn to program [LRS](lrs.md), so can you.
|
||||
**Does drummyfish have [divine intellect](terry_davis.md)?** Hell no, but thanks to his extreme tendency for isolation, great curiosity and obsession with truth he is possibly the only man on Earth completely immune to propaganda, he can see the world as it is, not as it is presented, so he feels it is his moral duty to share what he is seeing. He is able to overcome his natural dumbness by tryharding and sacrificing his social and sexual life so that he can program more. If drummyfish can learn to program [LRS](lrs.md), so can you.
|
|
@ -15,4 +15,5 @@ TODO
|
|||
- **"how it looks like"**: It's either fucking "what it looks like" OR "how it looks", NOT both at once.
|
||||
- **Using apostrophe for plural**, especially with [acronym](acronym.md)s, for example "VPN's" (WRONG) instead of "VPNs" (correct).
|
||||
- **Spelling**: beginner stuff like "its" vs "it's", "there" vs "their" etc.
|
||||
- **Countable vs uncountable** bitch, I double dare you to ever say shit like "less mistakes".
|
||||
- ...
|
4
iq.md
4
iq.md
|
@ -4,10 +4,10 @@ TODO
|
|||
|
||||
## Pseudogenius VS Real Genius
|
||||
|
||||
Most people are called a genius nowadays -- any recent so called "genius" (such as [Steve Jobs](steve_jobs.md)) is in fact most likely of below average IQ; just barely above mediocre idea someone comes up with by chance will be celebrated as that of a genius, **real genius ideas will be met with hostility**; real genius ideas are too good and too far ahead and unacceptable to normal people. Furthermore success in [business](business.md) requires lack of intelligence so as to be unable to see the consequences of one's actions. Your cat watching you solve Riemann hypothesis will not even know what's happening, to it you are a retard wasting time on sliding a stick over table, on the other hand the cat will judge a monkey capable of opening a can of cat food a genius. Society is composed solely of idiots, they can only see if someone is a tiny bit better at what they do than them, and those they celebrate, if you are light years ahead of them they don't even have the capacity to comprehend how good you are at what you do because they can't even comprehend the thing you do. This is why shit technology is prospering and [LRS](lrs.md) is being overlooked. It's just another confirmation our ideas as superior.
|
||||
Most people are called a genius nowadays -- any recent so called "genius" (such as [Steve Jobs](steve_jobs.md)) is in fact most likely of below average IQ; just barely above mediocre idea someone comes up with by chance will be celebrated as that of a genius, **real genius ideas will be met with hostility**; real genius ideas are too good and too far ahead and unacceptable to normal people. Furthermore success in [business](business.md) requires lack of intelligence so as to be unable to see the consequences of one's actions. Your cat watching you solve Riemann hypothesis will not even know what's happening, to it you are a retard wasting time on sliding a stick over table, on the other hand the cat will judge a monkey capable of opening a can of cat food a genius. Society is composed solely of idiots, they can only see if someone is a tiny bit better at what they do than them, and those they celebrate, if you are light years ahead of them they don't even have the capacity to comprehend how good you are at what you do because they can't even comprehend the thing you do. This includes even [PhD](phd.md)s and people with several Nobel Prizes, everyone except the few supporters of [LRS](lrs.md) are just blind idiots playing along with the system, some lucky to succeed in it and some not. This is why shit technology is prospering and [LRS](lrs.md) is being overlooked. It's just another confirmation our ideas as superior.
|
||||
|
||||
## Quick IQ Test
|
||||
|
||||
Here is a quick but extremely accurate IQ estimate. Let *x* be the approximate amount to which you agree with [LRS](lrs.md), expressed in percents. You IQ (SD 15) is approximately *2 * x*. If you can't compute that, subtract 200.
|
||||
|
||||
DISCLAIMER: The previous paragraph is suitable to everyone. The following is a binding legal advice: STOP [CAPITALISM](capitalism.md).
|
||||
DISCLAIMER: The previous paragraph is suitable to everyone. The following is a binding legal and health advice: STOP [CAPITALISM](capitalism.md).
|
4
lrs.md
4
lrs.md
|
@ -83,7 +83,7 @@ Apart from this software a lot of other software developed by other people and g
|
|||
|
||||
- **[brainfuck](brainfuck.md)**: Extremely simple [programming language](programming_language.md).
|
||||
- **[dwm](dwm.md)**: Official [suckless](suckless.md) [window manager](wm.md).
|
||||
- **[OpenBSD](openbsd.md)**: Cool [operating system](os.md).
|
||||
- **[Collapse OS](collapseos.md)** and **[Dusk OS](duskos.md)**: Extremely minimalist [operating systems](operating_system.md).
|
||||
- **[LIL](lil.md)**: Tiny embeddable [scripting](script.md) programming language.
|
||||
- **[lisp](lisp.md)**: Programming language with a pretty elegant design.
|
||||
- **[st](st.md)**: Official [suckless](suckless.md) [terminal emulator](terminal.md).
|
||||
|
@ -97,7 +97,7 @@ Apart from this software a lot of other software developed by other people and g
|
|||
- **[Simon Tatham's portable puzzle collection](stppc.md)**: Very portable collection of puzzle [games](game.md).
|
||||
- ...
|
||||
|
||||
Other potentially LRS software to check out may include [TinyGL](tinygl.md), [scc](scc.md), [ed](ed.md), [IBNIZ](ibniz.md), [lynx](lynx.md), [links](links.md), [uClibc](uclibc.md), [miniz](miniz.md), [nuklear](nuklear.md), [dmenu](dmenu.md), [sbase](sbase.md), [sic](sic.md), [tabbed](tabbed.md), [svkbd](svkbd.md), [busybox](busybox.md), [darcs](darcs.md), [raylib](raylib.md), [IRC](irc.md), [PortableGL](portablegl.md) and others.
|
||||
Other potentially LRS software to check out may include [TinyGL](tinygl.md), [scc](scc.md), [ed](ed.md), [IBNIZ](ibniz.md), [lynx](lynx.md), [links](links.md), [uClibc](uclibc.md), [miniz](miniz.md), [nuklear](nuklear.md), [dmenu](dmenu.md), [sbase](sbase.md), [sic](sic.md), [tabbed](tabbed.md), [svkbd](svkbd.md), [busybox](busybox.md), [darcs](darcs.md), [raylib](raylib.md), [IRC](irc.md), [PortableGL](portablegl.md), [openbsd](openbsd.md), [mtpaint](mtpaint.md) and others.
|
||||
|
||||
It is also possible to talk about LRS data formats, [protocols](protocol.md), standards, designs and concepts as such etc. These might include:
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
# Operating System
|
||||
|
||||
Operating System (OS) is normally a hugely complex program that's typically installed before any other program and serves as a platform for running other programs as well as managing resources (CPU usage, [RAM](ram.md), [files](file.md), [network](network.md), ...) and offering services and interfaces for humans and programs.
|
||||
Operating System (OS) is normally a complex program that's typically installed on a [computer](computer.md) before any other user program and serves as a platform for running other programs as well as managing resources (CPU usage, [RAM](ram.md), [files](file.md), [network](network.md), ...) and offering services and interfaces for humans and programs. As with most things, the definition of an OS can differ and be stretched greatly -- while a typical OS will include features such as [graphical interface](gui.md) with windows and mouse cursor, filesystem, [multitasking](multitasking.md), networking, [audio](audio.md) system, safety mechanisms or user accounts, there exist OSes that work without any said feature.
|
||||
|
||||
There is a nice [CC0](cc0.md) wiki for OS development at https://wiki.osdev.org/.
|
||||
|
||||
From programmer's point of view a serious OS is one of the most difficult pieces of software one can pursue to develop. The task involves an enormous amount of [low-level](low_level.md) programming, development of own tools from scratch and requires deep and detailed knowledge of all components of a computer, of established standards as well as many theoretical subjects such as [compiler](compiler.md) design.
|
||||
|
||||
**Which OS is the best?** Currently there seems to be no good operating system in existence, all are just too far away from [LRS](lrs.md) ideals, however there are quite a few relatively usable ones, mostly [Unix](unix.md) like systems. For example [OpenBSD](openbsd.md) seems to be one of them, however it is [proprietary](proprietary.md) (yes, it contains some code without license) and too obsessed with MUH [SECURITY](security.md). [HyperbolaBSD](hyperbolabsd.md) at least tries to address the freedom issue of OpenBSD. [Devuan](devuan.md) is pretty usable, [just werks](just_werks.md) and is alright in not being an absolute apeshit of consoomerist bloat. [FreeDOS](freedos.md) seemed nice too: though it's not Unix like, it is much more [KISS](kiss.md) than Unices.
|
||||
**Which OS is the best?** Currently there seems to be almost no good operating system in existence, except perhaps for [Collapse OS](collapseod.md) and [Dusk OS](duskos.md) which may be the closest to [LRS](lrs.md) at the moment, but aren't widely used yet and don't have many programs running on them. Besides this there are quite a few relatively usable OSes, mostly [Unix](unix.md) like systems. For example [OpenBSD](openbsd.md) seems to be one of them, however it is [proprietary](proprietary.md) (yes, it contains some code without license) and too obsessed with MUH [SECURITY](security.md), and still a bit overcomplicated. [HyperbolaBSD](hyperbolabsd.md) at least tries to address the freedom issue of OpenBSD but suffers from many others. [Devuan](devuan.md) is pretty usable, [just werks](just_werks.md) and is alright in not being an absolute apeshit of consoomerist bloat. [FreeDOS](freedos.md) seemed nice too: though it's not Unix like, it is much more [KISS](kiss.md) than Unices, but it will probably only work on [x86](x86.md) systems.
|
||||
|
||||
An OS, as a software, consists of two main parts:
|
||||
|
||||
|
@ -23,17 +23,22 @@ TODO
|
|||
|
||||
Below are some of the most notable OSes.
|
||||
|
||||
- [Android](android.md)
|
||||
{ Some more can be found here: https://wiki.osdev.org/Projects. ~drummyfish }
|
||||
|
||||
- [Android](android.md): extremely badly designed malicious system
|
||||
- [BSD](bsd.md) systems such as [OpenBSD](openbsd.md) and [freeBSD](freebsd.md): Unix-like OSes
|
||||
- [Collapse OS](collapseos.md)
|
||||
- [Collapse OS](collapseos.md): [finished](finished.md), extremely minimalist OS that will help us survive the [collapse](collapse.md)
|
||||
- [DuskOS](duskos.md): kid of continuation of Collapse OS aiming for more comfort
|
||||
- [DOS](dos.md)
|
||||
- [FreeDOS](freedos.md)
|
||||
- [GNU](gnu.md)/[Linux](linux.md) systems encompassing many [distributions](distro.md)
|
||||
- [GNU](gnu.md)/[Linux](linux.md) very popular systems existing in many different [distributions](distro.md), some completely [free](free_software.md)
|
||||
- [Haiku](haiku.md)
|
||||
- [HyperbolaBSD](hyperbolabsd.md)
|
||||
- [Inferno](inferno.md): OS in the style of Plan 9
|
||||
- [MacOS](macos.md)
|
||||
- [Minix](minix.md)
|
||||
- [Plan 9](plan9.md): research OS, continuing the ideas of [Unix](unix.md)
|
||||
- [PostmarketOS](pmos.md)
|
||||
- [ReactOS](reactos.md)
|
||||
- [Replicant](replicant.md)
|
||||
- [Solaris](solaris.md)
|
||||
|
|
|
@ -16,6 +16,8 @@ Remember, portability is about **making it easy for a programmer to take your pr
|
|||
|
||||
**The same goes for languages and [libraries](library.md)**: do NOT use big/bloated languages such as [Python](python.md), [Java](java.md) or [JavaScript](javascript.md) -- your program would immediately become dependent on a hugely complex ecosystem of such language. For portability you should basically **only write in [C](c.md)** (the best established, time tested, relatively simple language supported basically by every platform) or in [C++](cpp.md) at worst, and even with these languages do NOT use the newer standards as these hugely limit the number of compliant compilers that will be able to compile your program. The best is to write in C89 or C99 standard of C. **Minimize the number of libraries you use**, even if it is the standard library of your language -- not all compilers fully adhere to standards and some don't have the standard library even if the should. For [shell](shell.md) [scripts](script.md) only use **[posix shell](posix_shell.md)**, i.e. only use constructs, utilities and flags/features defined by the posix standard, even if you have more "powerful" shell and utilities like [Bash](bash.md) and [GNU](gnu.md) utils.
|
||||
|
||||
{ A great example of how avoiding C features can help your programs be more portable can be seen with [Dusk OS](duskos.md), a very small operating system that will likely be THE system we use if (or rather when) the [collapse](collapse.md) strikes. The system is implementing what they call "Almost C" (https://git.sr.ht/~vdupras/duskos/tree/master/fs/doc/cc/index.txt) -- a language trying to be close to C but avoiding standard compliance to keep simplicity. They want to port C programs but HAVE TO keep it simple so they just can't implement full C and when the judgement day comes, the programs that don't rely on much will simply be the ones that survive. If you just hide behind the excuse "the feature is in the standard so IT HAS TO BE IMEPLEMENTED", your program will end up more unlikely to be ported, an old piece of paper saying your program should run simply won't matter. In Dusk OS you can actually see this porting effort happening right now. ~drummyfish }
|
||||
|
||||
In your compiled programs **always make your own thin [I/O](io.md) abstraction, [decouple](coupling.md) your I/O libraries, separate [frontend](frontend.md) and [backend](backend.md)**. This is one of the most basic and most important things to do. Why? Well unless you're writing a library, you will need to use I/O (write out messages, draw to screen, create [GUI](gui.md), read keyboard commands, read from files, read from network, ...) so you will NEED to use some library for this (C [stdlib](stdlib.md), [SDL](sdl.md), OS [syscalls](syscall.md), [Xlib](xlib.md), ...) but you absolutely DON'T WANT this library to become a hard [dependency](dependency.md) of your program because if your program depends let's say on SDL, you won't be able to make your program run on platforms that don't have SDL. So the situation is that you HAVE TO use some I/O library but you don't want to become dependent on it.
|
||||
|
||||
The way to solve this is to create your own small I/O abstraction in your project, i.e. your own functions (such as `drawPixel`, `writeMessage`, `keyPressed`, `playSound`, `readFrile` etc.) for performing I/O, which you will use inside your main program. These functions will be defined in a small file which will basically be your own small I/O library just for your program. The functions you define there will then internally use functions of whatever underlying I/O system you choose to use at the time as your [frontend](frontend.md) (SDL, Xlib, SFML, ...); the important thing is that your main program code won't itself depend on the underlying system, it will only depend on your I/O abstraction, your own functions. Your custom I/O functions will depend on the underlying I/O system but in a way that's very easy to change -- let's say that your `keyPressed` function internally uses SDL's `SDL_GetKeyboardState` to read keyboard state. If you want to switch from using SDL to using a different frontend, you will only have to change the code in one place: in your I/O abstraction code, i.e. inside your `keyPressed` function. E.g. if you switch from SDL to SFML, you will just delete the code inside your `keyPressed` function and put in another code that uses SFML functions to read keyboard (e.g. the `isKeyPressed` attribute), and your whole code will instantly just work on SFML. In fact you can have multiple implementations of your functions and allow switching of different backends freely -- just as it is possible to compile a [C](c.md) program with any C compiler, you can make it possible to compile your program with any I/O frontend. If you used SDL's specific functions in your main code, you would have to completely rewrite your whole codebase if you wanted to switch away from SDL -- for this reason your main code must never directly touch the underlying I/O system, it must only do so through your I/O abstraction. Of course these principles may apply to any other thing that requires use of external libraries, not just I/O.
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# Privacy
|
||||
|
||||
Digital privacy is the ability of someone to hide "sensitive" [information](information.md) about himself; nowadays "privacy concerns" are a big part of [capitalist](capitalism.md) [fear culture](fear_culture.md) and [fight culture](fight_culture.md), and fall under so called [computer security](security.md). Of course, there are other forms of privacy than digital, for example the physical privacy [in real life](irl.md), however in this article we'll be implicitly dealing with digital privacy unless mentioned otherwise, i.e. privacy with respect to computers, e.g. on the [Internet](internet.md). Let's remind ourselves the whole business around privacy is [bullshit](bullshit.md) that's wasting energy which could better be spent on actually useful things such as feeding the hungry or curing the ill. Do not engage in privacy hysteria.
|
||||
*We shit on your privacy.*
|
||||
|
||||
Digital privacy is the ability of someone to hide "sensitive" [information](information.md) about himself; nowadays "privacy concerns" are a big part of [capitalist](capitalism.md) [bullshit](bullshit.md), [fear culture](fear_culture.md) and [fight culture](fight_culture.md), and fall under so called [computer security](security.md), yet greater area of bullshit business. Of course, there are other forms of privacy than digital, for example the physical privacy [in real life](irl.md), however in this article we'll be implicitly dealing with digital privacy unless mentioned otherwise, i.e. privacy with respect to computers, e.g. on the [Internet](internet.md). For starters let's stress the whole business around privacy is [bullshit](bullshit.md) that's wasting energy which could better be spent on actually useful things such as feeding the hungry or curing the ill. Do not engage in privacy hysteria.
|
||||
|
||||
{ I have my personal data publicly online and under CC0 for anyone to download and do anything with, including my real name, date of birth, medical info and even nude photos. Literally nothing bad ever happened due to this. ~drummyfish }
|
||||
|
||||
|
|
|
@ -11,3 +11,4 @@ What EXACTLY constitutes the Smol Internet? Of course we don't really have exact
|
|||
- [Usenet](usenet.md)
|
||||
- [geocities](geocities.md)
|
||||
- [neocities](neocities.md)
|
||||
- [soynet](soynet.md)
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
*Not to be confused with [science](science.md).*
|
||||
|
||||
{ I did my own peer review of this article and give it 10/10. ~drummyfish }
|
||||
|
||||
Soyence is [business](business.md), [propaganda](propaganda.md) and [politics](politics.md) trying to pass as [science](science.md), nowadays promoted typically by [pseudoleftists](pseudoleft.md), [pseudoskeptics](pseudoskepticism.md), [capitalists](capitalism.md) and [corporations](corporation.md). It is what in the [21st century](21st_century.md) has taken on the role that's historically been played by the church: that of establishing and maintaining orthodoxy for the control of mass population -- this time it is so called "science" or "rationality" that's used as the tool instead of [God](god.md) and religion, however the results are the same. Soyence is not about listening to what science says, it is about listetning to what *"reputable scientists"* say, and of course not questioning them; soyence is what the typical reddit [atheist](atheism.md) or [tiktok](tiktok.md) [feminist](feminism.md) believes science is or what Neil De Grass Tyson tells you science is. One red flag about soyence is a great weight put on **reputation** -- in true science reputation plays no role, only results do; reputation and its great value for one's acceptance is rather part of politics. Soyence calls itself the one and only science^TM and [gatekeeps](gatekeeping.md) the term by calling unpopular science (such as that regarding human [race](race.md), questioning official versions of [historical](history.md) events or safety of big pharma [vaccines](vaccine.md)) "[pseudoscience](pseudoscience.md)" and "[conspiracy theories](conspiracy_theory.md)". Soyence itself is pseudoscience but it has an official status, approval of [state](state.md), strong connection to [politics](politics.md), it is mainstream, popular, controlled by those in power, [censored](censorship.md) ("moderated") and intentionally misleading. Soyence can be encountered in much of [academia](academia.md), on [Wikipedia](wikipedia.md) and in other popular/mainstream media such as TV "documentaries" and [YouTube](youtube.md).
|
||||
|
||||
Compared to good old [fun](fun.mf) pseudosciences such as [astrology](astrology.md) and [flat Earth](flat_earth.md), soyence is extra sneaky by purposefully trying to blend in with real science, i.e. within a certain truly scientific field, such as biology, there is a soyentific [cancer](cancer.md) mixed in by activists, corporations and state, that may be hard to separate for common folk and many times even for pros. This is extremely [harmful](harmful.md) as in the eyes of retarded people (basically everyone) the neighboring legit science gives credibility to propaganda bullshit. There is a tendency to think we somehow magically live in a time that's fundamentally different from other times in history in which it is now a pretty clear and uncontroversial fact that the name of science was abused hard by propaganda, almost everyone easily accepts that historically politically constructed lies were presented as confirmed by science, but somehow people refuse to believe it could be the case nowadays. In times of Nazism there was no doubt about race being a completely scientific term and that Jews were scientifically confirmed to be the inferior race -- nowadays in times when anti Nazis have won and politics is based on denying existence of race somehow scientists start to magically find evidence that no such thing as race has ever existed -- how convenient! And just in case you wanted to check if it's actually true, you'll be labeled a racist and you won't find job ever again.
|
||||
|
|
|
@ -29,7 +29,7 @@ Some basic facts, features and equations regarding triangles are following (bewa
|
|||
|
||||
- **Triangle angles add up to 180 degrees** ([pi](pi.md) [radians](radian.md)). This can be used to determine unknown side angles.
|
||||
- Center of weight: average the three coordinates, or take the intersection of the triangle's medians.
|
||||
- [Area](area.md):
|
||||
- **[area](area.md)**:
|
||||
- general triangle: *a * altitude(a) / 2*
|
||||
- right triangle: *a * b / 2*
|
||||
- **[Pythagorean theorem](pythagorean_theorem.md)**: For the lengths of the sides of a RIGHT triangle it always holds that *a^2 + b^2 = c^2*. This is extremely important and can be used to determine unknown side lengths of right triangles.
|
||||
|
@ -38,7 +38,9 @@ Some basic facts, features and equations regarding triangles are following (bewa
|
|||
- **Law of sines**: *a / sin(alpha) = b / sin(beta) = c / sin(gamma)*
|
||||
- **Law of cosines**: Generalization of Pythagorean theorem: *a^2 = b^2 + c^2 - 2 * b * c * cos(alpha)*.
|
||||
- Triangle [tessellation](tessellation.md) is one of only three possible regular plane tilings (the other two being [square](square.md) and [hexagon](hexagon.md)).
|
||||
- Every triangle has one [incircle](incircle.md) ([circle](circle.md) inside the triangle which touches each of its sides at one point) and one [circumcircle](circumcircle.md) ("outside" circle passing through all three triangle's vertices).
|
||||
- Every triangle has two special associated [circles](circle.md):
|
||||
- **[incircle](incircle.md)**: circle inside the triangle which touches each of its sides at one point, its center (incenter) lies on the intersection of all angle bisectors.
|
||||
- **[circumcircle](circumcircle.md)**: circle outside the triangle which touches each of its vertices, its center (circumcenter) lies on the perpendicular bisectors of each side.
|
||||
- Triangle vertices always line in a single [plane](plane.md) (unlike other polygons).
|
||||
|
||||
In non [Euclidean](euclidean.md) ("crazy") geometries triangles behave weird, for example we can draw a triangle with three right angles on a surface of a [sphere](sphere.md) (i.e. its angles add to more than 180 degrees). This fact can be exploited by inhabitants of a space (e.g. our [Universe](universe.md)) to find out if they in fact live in a non Euclidean space (and possibly determine the space's exact [curvature](curvature.md)).
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
This is an auto-generated article holding stats about this wiki.
|
||||
|
||||
- number of articles: 526
|
||||
- total size of all texts in bytes: 2626489
|
||||
- number of articles: 528
|
||||
- total size of all texts in bytes: 2634904
|
||||
|
||||
longest articles:
|
||||
|
||||
|
@ -23,6 +23,14 @@ longest articles:
|
|||
latest changes:
|
||||
|
||||
```
|
||||
Date: Mon Dec 25 12:37:02 2023 +0100
|
||||
democracy.md
|
||||
iq.md
|
||||
linux.md
|
||||
paradigm.md
|
||||
programming_language.md
|
||||
ted_kaczynski.md
|
||||
wiki_stats.md
|
||||
Date: Sat Dec 23 19:56:56 2023 +0100
|
||||
algorithm.md
|
||||
bytecode.md
|
||||
|
@ -44,15 +52,5 @@ c.md
|
|||
forth.md
|
||||
wiki_stats.md
|
||||
Date: Thu Dec 21 12:04:09 2023 +0100
|
||||
assembly.md
|
||||
blender.md
|
||||
devuan.md
|
||||
fascism.md
|
||||
forth.md
|
||||
fun.md
|
||||
gemini.md
|
||||
needed.md
|
||||
programming_language.md
|
||||
wiki_stats.md
|
||||
```
|
||||
|
||||
|
|
Loading…
Reference in a new issue