master
Miloslav Ciz 2 years ago
parent 01ab666f94
commit 1ff2170a74

@ -4,7 +4,7 @@ ASCII art is the [art](art.md) of manually creating graphics and images only out
This kind of art used to be a great part of the culture of earliest [Internet](internet.md) communities for a number of reasons imposed largely by the limitations of old computers -- it could be created easily with a text editor and saved in pure text format, it didn't take much space to store or send over a network and it could be displayed on text-only displays and terminals. The principle itself predates computers, people were already making this kind of images with type writers. Nevertheless the art survives even to present day and lives on in the hacker culture, in [Unix](unix.md) communities, on the [Smol Internet](smol_internet.md) etc. ASCII diagram may very well be embedded e.g. in a comment in a source code to explain some spatial concept -- that's pretty [KISS](kiss.md). We, [LRS](lrs.md), highly advocate use of ASCII art whenever it's [good enough](good_enough.md).
Here is a simple 16-shade ASCII palette (but watch out, it will depend on your font): `#OVaxsflc/!;,.- `.
Here is a simple 16-shade ASCII [palette](palette.md) (but watch out, whether it works will depend on your font): `#OVaxsflc/!;,.- `. Another one can be e.g.: `WM0KXkxocl;:,'. `.
```
_,,_

@ -15,6 +15,8 @@ Chess is an old two-player board [game](game.md), perhaps most famous and popula
- It is a source of many interesting [mathematical](math.md) and programming challenges.
- It seems to strike the right balance of simplicity and complexity, it is very simple but not so trivial as to be ever solved in a foreseeable future.
Chess as a game is not and cannot be copyrighted, but **can chess games (moves played in a match) be copyrighted?** Thankfully there is a pretty strong consensus and precedence that say this is not the case, even though capitalists try to play the intellectual property card from time to time (e.g. 2016 tournament organizers tried to stop chess websites from broadcasting the match moves under "trade secret protection", unsuccessfully).
## Chess In General
Chess evolved from ancient board games in India in about 6th century. Nowadays the game is internationally governed by **FIDE** which has taken the on role of an authority that defines the official rules: FIDE rules are considered to be the standard chess rules. FIDE also organizes tournaments, promotes the game and keeps a list of registered players whose performance it rates with so called Elo system based on the performance it also grants titles such as **Grandmaster** (GM, strongest), **Internation Master** (IM, second strongest) or **Candidate Master** (CM).

@ -4,7 +4,7 @@ Copyright (better called copyrestriction) is one of many types of so called [int
When someone creates something that can even remotely be considered artistic expression (even such things as e.g. a mere collection of already existing things), they automatically gain 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 [free](free_software.md) license attached is implicitly fully owned by its creator** (so called "all rights reserved") and can't be used by anyone without permission. It is said that copyright can't apply to ideas, only to expressions of ideas, however that's [bullshit](bs.md), the line isn't clear and is arbitrarily drawn by judges; for example regarding stories in books it's been established that the story itself can be copyrighted, not just its expression (you can't rewrite the Harry Potter story in different words and start selling it).
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 whom 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 reuse, 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).
The current form of copyright (as well as other types of IP such as software patents) has been highly criticized by many people, even those whom 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 reuse, 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).
@ -14,7 +14,7 @@ Copyright rules differ greatly by country, most notably the US measures copyrigh
[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 (e.g. no one can own the shape of a generic car). But it's never good to rely on these peculiarities as they are specific to time/location, they are often highly subjective, fuzzy and debatable and may even be retroactively changed by law. This constitutes a huge legal [bloat](bloat.md) and many time legal unsafety. Do not stay in the gray area, try to stay safely far away from the fuzzy copyright line.
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). Also even though many try to claim so, copyright does NOT arise for the effort needed to create the work -- so called "sweat of the brow" -- some say that when it took a great effort to create something, the author should get a copyright on it, however this is NOT and must NOT be the case (otherwise it would be possible to copyright mere ideas, simple mathematical formulas, rules of games etc.). Depending on time and location there also exist various peculiar exceptions such as the freedom of panorama for photographs or uncopyrightable utilitarian design (e.g. no one can own the shape of a generic car). But it's never good to rely on these peculiarities as they are specific to time/location, they are often highly subjective, fuzzy and debatable and may even be retroactively changed by law. This constitutes a huge legal [bloat](bloat.md) and many time legal unsafety. Do not stay in the gray area, try to stay safely far away from the fuzzy copyright line.
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)**.

@ -1,6 +1,6 @@
# Dependency
Dependency is something your program depends on -- dependencies are [bad](shit.md)! Unfortunately they are also unavoidable. We at least try to minimize dependencies as much as possible while keeping our program functioning as intended, and those we can't avoid we try to abstract in order to be able to quickly drop-in replace them with alternatives.
Dependency is something your program depends on -- dependencies are [bad](shit.md)! Among programmers the term *dependency hell* refers to a very common situation of having to deal with the headaches of managing dependencies. Unfortunately dependencies are also unavoidable. We at least try to minimize dependencies as much as possible while keeping our program functioning as intended, and those we can't avoid we try to abstract (see [portability](portability.md)) in order to be able to quickly drop-in replace them with alternatives.
Having many dependencies is a sign of [bloat](bloat.md) and bad design. Unfortunately this is the reality of mainstream programming. For example at the time of writing this [Chromium](chromium.md) in [Debian](debian.md) requires (recursively) 395 packages LMAO xD And these are just runtime dependencies...
@ -14,7 +14,7 @@ In [software](software.md) development context we usually talk about software de
- [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, ...)
- sufficient [computing resources](computing_resources.md) (enough RAM, CPU frequency and cores, ...)
- [graphics card](gpu.md)
- [floating point unit](fpu.md) and other [coprocessors](coprocessor.md)
- CPU features such as special instructions
@ -26,13 +26,15 @@ In [software](software.md) development context we usually talk about software de
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:
Why are dependencies so bad? Because your program is for example:
- **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)
- **less [portable](portability.md)**
- **more expensive to [maintain](maintenance.md) (and create)** (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)
- **more [bloated](bloat.md) and so probably less efficient**, i.e. slower, eating up more RAM than necessary etc.
- **less under your control** (in practice it's extremely difficult to modify and maintain a library you depend on 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

@ -1,17 +1,15 @@
# Drummyfish
Drummyfish (also tastyfish, drumy etc.) is a programmer, [anarchopacifist](anpac.md) and proponent of [free software/culture](free_software.md), who started [this wiki](lrs_wiki.md) and invented the kind of software it focuses on: [less retarded software](lrs.md) (LRS). Besides others he has written [Anarch](anarch.md), [small3dlib](small3dlib.md), [raycastlib](raycastlib.md) and [SAF](saf.md). He has also been creating free culture art.
Drummyfish (also tastyfish, drumy etc.) is a programmer, [anarchopacifist](anpac.md) and proponent of [free software/culture](free_software.md), who started [this wiki](lrs_wiki.md) and invented the kind of software it focuses on: [less retarded software](lrs.md) (LRS). Besides others he has written [Anarch](anarch.md), [small3dlib](small3dlib.md), [raycastlib](raycastlib.md), [smallchesslib](smallchesslib.md), [tinyphysicsengine](tinyphysicsengine.md) and [SAF](saf.md). He has also been creating free culture art and otherwise contributing to free projects such as [OpenMW](openm.md); he's been contributing with [public domain](pd.md) art of all kind (2D, 3D, music, ...) and writings to [Wikipedia](wikipedia.md), [Wikimedia Commons](wm_commons.md), [opengameart](oga.md), [libregamewiki](lgw.md), freesound and others. Drummyfish is crazy and has no [real life](irl.md), he is pretty retarded when it comes to leading projects or otherwise dealing with people or practical life.
Drummyfish has a personal website at https://www.tastyfish.cz.
He loves all living beings, even those whose attributes he hates or who hate him. He is a [vegetarian](vegetarianism.md).
Aside from creating [LRS](lrs.md) drummyfish has contributed to a few [FOSS](foss.md) projects such as [OpenMW](openm.md). He's been contributing with [public domain](pd.md) art of all kind (2D, 3D, music, ...) and writings to [Wikipedia](wikipedia.md), [Wikimedia Commons](wm_commons.md), [opengameart](oga.md), [libregamewiki](lgw.md), freesound and others.
Drummyfish has a personal website at [www.tastyfish.cz](https://www.tastyfish.cz).
Drummyfish's real name is Miloslav Číž, he was born on 24.08.1990 and lives in Moravia, Czech Republic. He started programming at high school in [Pascal](pascal.md), then he went on to study [compsci](compsci.md) (later focused on [computer graphics](graphics.md)) in a Brno University of Technology and got a master's degree, however he subsequently refused to find a job in the industry, partly because of his views (manifested by [LRS](lrs.md)) and partly because of mental health issues (depressions/anxiety/avoidant personality disorder). He rather chose to do less harmful slavery such as cleaning and physical [spam](spam.md) distribution, and continues [hacking](hacking.md) on his programming (and other) projects in his spare time in order to be able to do it with absolute freedom.
Drummyfish's real name is Miloslav Číž, he was born on 24.08.1990 and lives in Moravia, Czech Republic, [Earth](earth.md) (he rejects the concept of a country/[nationalism](nationalism.md), the info here serves purely to specify a location). He started programming at high school in [Pascal](pascal.md), then he went on to study [compsci](compsci.md) (later focused on [computer graphics](graphics.md)) in a Brno University of Technology and got a [master's degree](msc.md), however he subsequently refused to find a job in the industry, partly because of his views (manifested by [LRS](lrs.md)) and partly because of mental health issues (depressions/anxiety/avoidant personality disorder). He rather chose to do less harmful [slavery](job.md) such as cleaning and physical [spam](spam.md) distribution, and continues [hacking](hacking.md) on his programming (and other) projects in his spare time in order to be able to do it with absolute freedom.
In 2019 drummyfish has written a "manifesto" of his ideas called **Non-Competitive Society** that describes the political ideas of an ideal society. It is in the [public domain](public_domain.md) under [CC0](cc0.md) and available for download online.
{ Why doxx myself? Following the [LRS](lrs.md) philosophy, I believe information should be free. [Censorship](censorship.md) -- even in the name of [privacy](privacy.md) -- goes against information freedom. We should live in a society in which people are moral and don't abuse others by any means, including via availability of their private information. And in order to achieve ideal society we have to actually live it, i.e. slowly start to behave as if it was already in place. Of course, I can't tell you literally everything (such as my passwords etc.), but the more I can tell you, the closer we are to the ideal society. ~drummyfish }
He likes many things such as animals, peace, freedom, programming, [math](math.md) and [games](game.md) (e.g. [Xonotic](xonotic.md)).
Drummyfish is pretty retarded when it comes to leading projects or otherwise dealing with people or practical life.
He likes many things such as animals, peace, freedom, programming, [math](math.md) and [games](game.md) (e.g. [Xonotic](xonotic.md) and [OpenArena](openarena.md), even though he despises [competitive](competition.md) behavior in real life).

@ -1,7 +1,5 @@
# Future-Proof Technology
*see also [sustainability](sustainability.md)*
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 by implementing things such as [bloat](bloat.md) and [planned obsolescence](planned_obsolescence.md).
A [truly good technology](lrs.md) is trying to be future-proof because this saves us the great cost of maintenance and reinventing wheels.
@ -12,4 +10,10 @@ Despite the extremely bad situation not all hope is lost. At least in the world
- 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.
- Avoiding the hyped "modern" "feature-rich" ([bloated](bloat.md)) technology arising from the consumerist market.
## See Also
- [sustainability](sustainability.md)
- [portability](portability.md)

@ -34,7 +34,7 @@ Are you a noob but see our ideas as appealing and would like to join us? Say no
## Did You Know
- That all [Intel](intel.md) [processors](cpu.md) since 2008 (and [AMD](amd.md) processors since 2013) have a hardware [backdoor](backdoor.md) ([Intel ME](intel_me.md), [AMD PSP](amd_psp.md)) that allow spying on users of those processors no matter what operating system they run?
- That all [Intel](intel.md) [processors](cpu.md) since 2008 (and [AMD](amd.md) processors since 2013) have a hardware [backdoor](backdoor.md) ([Intel ME](intel_me.md), [AMD PSP](amd_psp.md)) that run the [Minix](minix.md) operating system and allows spying on users of those processors no matter what operating system they run?
- That [capitalism](capitalism.md) is probably the most [retarded](retard.md) and dangerous idea in [history](history.md)?
- You can mathematically [prove you don't know some information](no_knowledge_proof.md)?
- That a complement of a [formal language](formal_language.md) can be computationally simpler than the original -- for example that a [pushdown automaton](pushdown_automaton.md) cannot tell which strings are of form a^(n)b^(n)c^(n), but it can tell exactly which ones are not?
@ -47,6 +47,7 @@ If you don't know where to start, here are some suggestions. If you're new, the
- [free software](free_software.md)
- [suckless](suckless.md)
- [less retarded software](lrs.md)
- [less retarded society](less_retarded_society.md)
- [anarcho pacifism](anpac.md)
- [capitalism](capitalism.md)
- [capitalist software](capitalist_software.md)

@ -4,7 +4,7 @@
In the context of [cryptography](cryptography.md) *no knowledge proof* (NOT to be confused with [zero knowledge proof](zero_knowledge_proof.md)) is a mathematical [proof](proof.md) of not knowing certain information. At the moment it seems to be kind of a [fun](fun.md) idea and curiosity without much use, but in math many fun ideas have found a serious use later on, so who knows. { If anyone knows of a legit use, let me know. ~drummyfish }
The principle is this: supposed we have a one way (practically irrevesible) [hash](hash.md) function *H* (such as [SHA-256](sha_256.md)). Also suppose we have all agreed on a special value *y* that's non-zero and has been constructed so that it most likely doesn't have any malicious properties, i.e. it is a so called *nothing up my sleeve* value and can be for example some sentence converted to ASCII -- more detail on this will follow later, now simply suppose we have some value *y*. Now by providing someone with a number *x* we prove we don't know a value *z* such that *h(z) = h(x) xor y*.
The principle is this: supposed we have a one way (practically irreversible) [hash](hash.md) function *H* (such as [SHA-256](sha_256.md)). Also suppose we have all agreed on a special value *y* that's non-zero and has been constructed so that it most likely doesn't have any malicious properties, i.e. it is a so called *nothing up my sleeve* value and can be for example some sentence converted to ASCII -- more detail on this will follow later, now simply suppose we have some value *y*. Now by providing someone with a number *x* we prove we don't know a value *z* such that *h(z) = h(x) xor y*.
How can this work? Well, imagine we knew *z* and we wanted to prove we didn't know it. We can compute *h(x)*, (un)xor it with *y*, but now to compute *x* we'd have to reverse the hash *h*, i.e. compute *x = h^(-1)(h(z) xor y)*. And from the definition of the hash we can't do this.

@ -1,8 +1,8 @@
# Portability
Portable [software](software.md) is software that is easy to [port](port.md) to (make run on) other platforms. Platforms here mean anything that serves as an environment enabling software to run, i.e. [hardware](hardware.md) platforms ([CPUs](cpu.md), [ISAs](isa.md), game consoles, ...), different [operating systems](os.md) vs [bare metal](bare_metal.md), [fantasy consoles](fantasy_console.md) etc. **Portability is an extremely important attribute of [good software](lrs.md)** as it allows us to write the program once and then run it on many different computers with little effort -- without portability we'd be constantly busy rewriting old programs to run on new computers, portability allows us to free our programs from being tied to specific computers and exist abstractly and independently and so become [time proof](time_proof.md). Examples of highly portable programs include [Anarch](anarch.md), [Simon Tatham's Portable Puzzle Collection](stppc.md), [sbase](sbase.md) (suckless) implementation of Unix tools such as [cat](cat.md) and [cmp](cmp.md) etc.
Portable [software](software.md) is software that is easy to [port](port.md) to (make run on) other platforms. Platforms here mean anything that serves as an environment enabling software to run, i.e. [hardware](hardware.md) platforms ([CPUs](cpu.md), [ISAs](isa.md), game consoles, ...), different [operating systems](os.md) vs [bare metal](bare_metal.md), [fantasy consoles](fantasy_console.md) etc. **Portability is an extremely important attribute of [good software](lrs.md)** as it allows us to write the program once and then run it on many different computers with little effort -- without portability we'd be constantly busy rewriting old programs to run on new computers, portability allows us to free our programs from being tied to specific computers and exist abstractly and independently and so become [future proof](future_proof.md). Examples of highly portable programs include [Anarch](anarch.md), [Simon Tatham's Portable Puzzle Collection](stppc.md), [sbase](sbase.md) (suckless) implementation of Unix tools such as [cat](cat.md) and [cmp](cmp.md) etc.
**Portability is different from mere [multiplatformness](multiplatform.md)**: multiplatform software simply runs on more than one platform without necessarily being designed with high portability in mind; portable software on the other hand possesses the inherent attribute of being designed so that very little effort is required to make it run on wide range of general platforms. Multiplatformness can be achieved cheaply by using a [bloated](bloat.md) framework such as the Godot engine or [QT](qt.md) framework, however that will not achieve portability; on the contrary it will hurt portability. Portability is achieved through good and careful design, efficient code and avoiding [dependencies](dependency.md) and [bloat](bloat.md).
**Portability is different from mere [multiplatformness](multiplatform.md)**: multiplatform software simply runs on more than one platform without necessarily being designed with high portability in mind; portable software on the other hand possesses the inherent attribute of being designed so that very little effort is required to make it run on wide range of general platforms. Multiplatformness can be achieved cheaply by using a [bloated](bloat.md) framework such as the Godot engine or [QT](qt.md) framework, however that will not achieve portability; on the contrary it will hurt portability. Portability is achieved through good and careful design, efficient code and avoiding [dependencies](dependency.md) and [bloat](bloat.md).
In connection to software the word *portable* also has one other meaning used mainly in context of [Windows](windows.md) programs: it is sometimes used for a binary executable program that can be run without installing (i.e. it can be carried around and ran from a USB drive etc.). However we'll stick to the previously defined meaning.
@ -14,6 +14,8 @@ Remember, portability is about making it easy for a programmer to take your prog
**Do NOT use big frameworks/engines** -- it is one of the greatest misconceptions among many programmers to think portable software is created with big frameworks, such as the [Godot](godot.md) engine, 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.
**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.
**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.

@ -0,0 +1,13 @@
# Reddit
TODO
Typical reddit thread after [SJW](sjw.md) takeover looks like this:
- [removed] +7000000
- [removed] +20000
- haha so hilarious, best thing I've ever read
- [removed] -1000000
- [removed] +300000
- this changed my life
- [removed] +123

@ -8,8 +8,10 @@ As [anarchists](anarchism.md) we of course despise the idea of worshiping people
Regarding [software](software.md) Stallman has for his whole life strongly and tirelessly promoted free software and [copyleft](copyleft.md) and has himself only used such software; he has always practiced what he preched and led the best example of how to live without [proprietary](proprietary.md) software. This is amazing. Nevertheless he isn't too concerned about [bloat](bloat.md) (judging by the GNU software and his own creation, [emacs](emacs.md)) and he also doesn't care that much about [free culture](free_culture.md) (some of his written works prohibit modification and his GNU project allows proprietary non-functional data). Sadly he has also shown signs of being a [type A fail](fail_ab.md) personality by writing about some kind of newspeak "*gender neutral language*" and by seeming to be caught in a [fight culture](fight_culture.md) (e.g. by supporting copyleft). Nevertheless he definitely can't be accused of populism as he basically tells what he considers to be the truth no matter what, and he is very consistent in this. Some of his unpopular opinions brought him a lot of trouble, e.g. the wrath of SJWs in 2019 for his criticism of the [pedo](pedophile.md) witch hunt.
He is a weird guy, having been recorded on video eating dirt from his feet before giving a lecture. In the book *Free as in Freedom* he admits he might be autistic. Nevertheless he's pretty smart, has magna cum laude degree in physics from Harvard, 10+ honorary doctorates, fluently speaks English, Spanish and French and has many times proven his superior programming skills (even though he later stopped programming to fully work on promoting the FSF).
He is a weird guy, having been recorded on video eating dirt from his feet before giving a lecture. In the book *Free as in Freedom* he admits he might be autistic. Nevertheless he's pretty smart, has magna cum laude degree in physics from Harvard, 10+ honorary doctorates, fluently speaks English, Spanish and French and a little bit of Indonesian and has many times proven his superior programming skills (even though he later stopped programming to fully work on promoting the FSF).
Stallman has a beautifully minimalist website http://www.stallman.org where he actively comments on current news and issues. He also made the famous free software song (well, only the lyrics, the melody is taken from a Bulgarian folk song Sadi Moma).
In 2019 Stallman was [cancelled](cancel_culture.md) by [SJW](sjw.md) fascists for merely commenting rationally on the topic of child sexuality following the Epstein scandal. He resigned from the position of president of the FSF but continues to support it.
In 2019 Stallman was [cancelled](cancel_culture.md) by [SJW](sjw.md) fascists for merely commenting rationally on the topic of child sexuality following the Epstein scandal. He resigned from the position of president of the FSF but continues to support it.
Stallman has been critical of [capitalism](capitalism.md) though he probably isn't a hardcore anticapitalist (he's an [American](usa.md) after all). [Wikidata](wikidate.md) states he's a proponent of [alter-globalization](alter_globalization.md) (not completely against globalization in certain areas but not supporting the current form of it).

@ -0,0 +1,56 @@
# Wikidata
Wikidata is a large collaborative project (a sister project of [Wikipedia](wikipedia.md), hosted by Wikimedia Foundation) for creating a huge noncommercial [public domain](public_domain.md) [database](database.md) containing information basically about everything. It records data in a form of so called [knowledge graph](knowledge_graph.md), i.e. it connects items and their properties with statements such as "Earth:location:inner Solar System", creating a mathematical structure called a [graph](graph.md). The whole database is available to anyone for any purpose without any conditions, under [CC0](cc0.md)!
Wikidata is wildly useful and greatly overlooked in the shadow of Wikipedia even though it offers a way to easily obtain large, absolutely [free](free_culture.md) and public domain data sets about anything. The database can be queried with specialized languages so one can e.g. get coordinates of all terrorist attacks that happened in certain time period, a list of famous male cats, visualize the tree of biological species, list Jews who run restaurants in Asia or any other crazy thing. Wikidata oftentimes contains extra information that's not present in the Wikipedia article about the item and that's not even quickly found by [googling](google.md), and the information is sometimes also backed by sources just like on Wikipedia, so it's nice to always check Wikidata when researching anything.
Wikidata was opened on 30 October 2012. The first data that were stored were links between different language versions of Wikipedia articles, later Wikipedia started to use Wikidata to store information to display in infoboxes in articles and so Wikidata grew and eventually became a database of its own. As of 2022 there is a little over 100 million items, over 1 billion statements and over 20000 active users.
## Database Structure
The database is a [knowledge graph](knowledge_graph.md). It stores the following kinds of records:
- **entities**: Specific "things", concrete or abstract, that exist and are stored in the database. Each one has a unique [ID](id.md), name (not necessarily unique), description and optional aliases (alternative names).
- **items**: Objects of the real world, their ID is a number prepended with the letter *Q*, e.g. *[dog](dog.md)* (Q144), *[Earth](earth.md)* (Q2), *idea* (QQ131841) or *[Holocaust](holocaust.md)* (Q2763).
- **properties**: Attributes that items may possess, their ID is a number prepended with the letter *P*, e.g. *instance of* (P31), *mass* (P2067) or *image* (P18). Properties may have constraints (created via statements), for example on values they may take.
- **statements**: Information about items and properties which may possibly link items/properties (entities) with other items/properties. One statement is so called triplet, it contains a subject (item/property), verb (property) and object (value, e.g. item/property, number, string, ...). I.e. a statement is a record of form *entity:property:value*, for example *dog(Q144):subclass of(P279):domestic mammal(Q57814795)*. Statements may link one property with multiple values (by having multiple statements about an entity with the same property), for example a man may have multiple nationalities etc. Statements may also optionally include *qualifiers* that further specify details about the statement, for example specifying the source of the data.
The most important properties are probably **instance of** (P31) and **subclass of** (P279) which put items into [sets](set.md)/classes and establish subsets/subclasses. The *instance of* attribute says that the item is an individual manifestation of a certain class (just like in [OOP](oop.md)), we can usually substitute is with the word "is", for example Blondi (Q155695, [Hitler](hitler.md)'s dog) is an instance of dog (Q144); note that an item can be an instance of multiple classes at the same time. The *subclass of* attribute says that a certain class is a subclass of another, e.g. dog (Q144) is a subclass of pet (Q39201) which is further a subclass of domestic animal (Q622852) etc. Also note that an item can be both an instance and a class.
## How To
There are many [libraries](library.md)/[APIs](api.md) for wikidata you can use, unlike shitty corporations that guard their data by force wikidata provides data in friendly ways -- you can even download the whole wikidata database in [JSON](json.md) format (about 100 GB).
The easiest way to retrieve just the data you are interested in is probably going to the online query interface (https://query.wikidata.org/), entering a query (in [SPARQL](sparql.md) language, similar to [SQL](sql.md)) and then clicking download data -- you can choose several formats, e.g. [JSON](json.md), [CSV](csv.md) etc. That can then be processed further with whatever language or tool, be it [Python](python.md), [LibreOffice](libreoffice.md) Calc etc.
**BEWARE**: the query you enter may easily take a long time to execute and time out, you need to write it nicely which for more complex queries may be difficult if you're not familiar with SPARQL. However wikidata offers online tips on [optimization](optimization.md) of queries and there are many examples right in the online interface which you can just modify to suit you.
Here are some example of possible queries. The following one selects video [games](game.md) of the [FPS](fps.md) genre:
```
SELECT ?item ?itemLabel WHERE
{
?item wdt:P31 wd:Q7889. # item is video game and
?item wdt:P136 wd:Q185029. # item is FPS
# this gets the item label:
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
LIMIT 100 # limit to 100 results, make the query faster
```
Another query may be this one: select [black holes](black_hole.md) along with their mass (where known):
```
SELECT ?item ?itemLabel ?mass WHERE
{
{ ?item wdt:P31 wd:Q589. } # instances of black hole
UNION
{ ?item wdt:P31 ?class. # instance of black hole subclass (e.g. supermassive blackhole, ...)
?class wdt:P279 wd:Q589. }
OPTIONAL { ?item wdt:P2067 ?mass }
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
```

@ -8,15 +8,17 @@ Women also can't drive, operate machines, they can't compare even to the worst m
Now let us remind ourselves that this is completely OK. Women are weaker, but in a [good society](less_retarded_society.md) this doesn't matter as in a good society people don't have to compete or prove their usefulness, everyone is loved equally, weak or strong.
Of course even though rare, well performing women may statistically appear. The issue is women are very often involved with a cult such as the [feminists](feminism.md) who waste their effort on [fighting](fight_culture.md) men instead of focusing on study and creation of real technology, and on actually loving it. They don't see technology as a beautiful field of art and science, they see it as a battlefield, a political tool to be weaponized to achieve social status, revenge on society etc. They can't understand the pure joy of [programming](programming.md), the love of creation for its own sake, they think more in terms of "learning to code will get me new followers on social networks" etc. You will never find a basement dweller programmer or [demoscene](demoscene.md) programmer of female gender, a hacker who is happy existing in a world of his own programs without the need for approval or external reward, a woman will never be able to understand this.
Of course even though rare, well performing women may statistically appear. The issue is women are very often involved with a cult such as the [feminists](feminism.md) who waste their effort on [fighting](fight_culture.md) men instead of focusing on study and creation of real technology, and on actually loving it. They don't see technology as a beautiful field of art and science, they see it as a battlefield, a political tool to be weaponized to achieve social status, revenge on society etc. They can't understand the pure joy of [programming](programming.md), the love of creation for its own sake, they think more in terms of "learning to code will get me new followers on social networks" etc. Woman mentality is biologically very different from men mentality, a woman is normally not capable of true, deep love, woman only thinks in terms of benefit, golddigging etc.; men, even if cheating, normally tend towards deep life-long love relationships, be it with people or other passions. You will never find a basement dweller programmer or [demoscene](demoscene.md) programmer of female gender, a hacker who is happy existing in a world of his own programs without the need for approval or external reward, a woman will likely never be able to understand this.
Supposed "achievements" of women post circa 2010 can't be taken seriously, propaganda has started to tryhard and invent and overrate achievements and basically just steal achievements of men and hand them over to women. There are [token](token.md) women inserted on [soyentific](soyence.md) positions etc. (lol just watch any recent [NASA](nasa.md) mission broadcast, there is always a woman inserted in front of the camera).
Of course, [LRS](lrs.md) loves all living beings equally, even women. In order to truly love someone we have to be aware of their true nature so that we can truly love them, despite all imperfections.
**Is there even anything women are better at than men?** Well, women seem for example more peaceful or at least less violent on average (feminism of course sees this as a "weakness" and tries to change it), though they seem to be e.g. more passive-aggressive. Nevertheless there have been a few successful queens in history, women can sometimes perhaps be good in representative roles. They have also evolved to perform the tasks of housekeeping and care taking at which they may excel (still it seems that if men focus at a specific tasks, they will beat a women, for example the best cooks in the world are men). Sometimes women may be preferable exactly for not being as "rough" as men, e.g. as singers, psychologists, massage therapists etc.
**Is there even anything women are better at than men?** Well, women seem for example more peaceful or at least less violent on average (feminism of course sees this as a "weakness" and tries to change it), though they seem to be e.g. more passive-aggressive. Nevertheless there have been a few successful queens in history, women can sometimes perhaps be good in representative roles (and other simple chair-sitting jobs). They have also evolved to perform the tasks of housekeeping and care taking at which they may excel (still it seems that if men fully focus on a specific tasks, they will beat a women, for example the best cooks in the world are men). Sometimes women may be preferable exactly for not being as "rough" as men, e.g. as singers, psychologists, massage therapists, sex workers etc.
# Women In Tech/Science
Finding famous women capable in technology is almost a futile task. One of the most famous women of [modern](modern.md) tech, even though more an entrepreneur than engineer, was [Elizabeth Holmes](elizabeth_holmes.md) who, to the feminists' dismay, turned out to be a complete fraud and is now facing criminal charges. [Grace Hopper](grace_hopper) (not "grass hopper" lol) is a woman actually worth mentioning for her contribution to programming languages. [Ada Lovelace](ada_lovelace.md) cited by the feminist propaganda as "the first programmer" also didn't actually do anything besides scribbling a note about a computer completely designed by a man. This just shows how desperate the feminist attempts at finding capable women in tech are. Then there are also some individuals who just contributed to the downfall of the technology who are, in terms of gender, probably more on the woman side, but their actual classification is actually pretty debatable -- these are monstrosities with pink hair who invented such [cancer](cancer.md) as [COCs](coc.md) and are not even worth mentioning.
Finding famous women capable in technology is almost a futile task. One of the most famous women of [modern](modern.md) tech, even though more an entrepreneur than engineer, was [Elizabeth Holmes](elizabeth_holmes.md) who, to the feminists' dismay, turned out to be a complete fraud and is now facing criminal charges. [Grace Hopper](grace_hopper) (not "grass hopper" lol) is a woman actually worth mentioning for her contribution to programming languages, though the contribution is pretty weak. [Ada Lovelace](ada_lovelace.md) cited by the feminist propaganda as the "first programmer" also didn't actually do anything besides scribbling a note about a computer completely designed by a man. This just shows how desperate the feminist attempts at finding capable women in tech are. Then there are also some individuals who just contributed to the downfall of the technology who are, in terms of gender, at least partially on the woman side, but their actual classification is actually pretty debatable -- these are monstrosities with pink hair who invented such [cancer](cancer.md) as [COCs](coc.md) and are not even worth mentioning.
In the related field of [free culture](free_culture.md) there is a notable woman, [Nina Paley](nina_paley.md), that has actually done some nice things for the promotion of free culture and also standing against the [pseudoleftist](pseudoleft.md) fascism by publishing a series of comics with a character named Jenndra Identitty, a parody of fascist trannies.

Loading…
Cancel
Save