master
Miloslav Ciz 11 months ago
parent ba68a469d5
commit aa7684dc19

@ -13,13 +13,17 @@ Here are some things and places with CC0 materials that you can use in your proj
TODO
- software:
- much of [LRS](lrs.md) sofware: [Anarch](anarch.md), [small3dlib](small3dlib.md), [raycastlib](raycastlib.md), [SAF](saf.md), ...
- much of [LRS](lrs.md) sofware: [Anarch](anarch.md), [small3dlib](small3dlib.md), [raycastlib](raycastlib.md), [SAF](saf.md), [comun](comun.md), ...
- ...
- other assets:
- many things on [Wikimedia Commons](wikimedia_commons.md)
- many things on opengameart
- many things on BlendSwap
- all of [drummyfish's](drummyfish.md) stuff including fonts, textures, 3D models etc.
- [librivox](librivox.md) creates CC0 audiobooks from old books
- ...
- text:
- [Esolang Wiki](esolang.md)
- OSdev Wiki [since 2011](https://wiki.osdev.org/OSDev_Wiki:Copyrights)
- OSdev Wiki [since 2011](https://wiki.osdev.org/OSDev_Wiki:Copyrights)
- [Encyclopedia Dramatica](dramatica.md)
- ...

@ -0,0 +1,8 @@
# Demo
Demo may stand for:
- A special kind of computer [program](program.md) that's made as a non-interactive audiovisual art. See [demoscene](demoscene.md).
- A non-video recording of game play (sometimes also called a *replay*), typically done by recording only user inputs in a [deterministic](determinism.md) game, or by only recording game state information (such as player positions at each frame etc.). Demos are used e.g. in [Doom](doom.md) or [Quake](quake.md). The advantage of a demo is its much smaller size compared to a video, as well as the possibility to replay it with different graphic settings, ability to detect cheating (i.e. verifying the game inputs are correct and humanly possible) etc.
- A gratis trial version of an otherwise paid program. This term used to be used mainly in the past, when demo versions of programs (such as games) were distributed e.g. on CDs in magazines for user to try out and potentially buy the full version.
- ...

@ -16,6 +16,7 @@ WORK IN PROGRESS
| [iPhone](iphone.md) | spyPhone |
| "left" | [pseudoleft](pseudoleft.md), SJW |
| "[Linux](linux.md)" | [GNU](gnu.md) |
| [modern](modern.md) | malicious, shitty |
| [NVidia](nvidia.md) | NoVidya |
| object oriented programming ([OOP](oop.md))| object obsessed programming |
| [openbsd](openbsd.md) | openbased |

@ -1,6 +1,6 @@
# Markov Chain
Markov chain is a relatively simple [stochastic](stochastic.md) (working with probability) mathematical model for predicting or generating sequences of symbols. It can be used to describe some processes happening in the [real world](real_world.md) such as behavior of some animals, Brownian motion or structure of a language. In the world of programming Markov chains are pretty often used for generation of texts that looks like some template text whose structure is learned by the Markov chain (Markov chains are one possible model used in [machine learning](machine_learning.md)). Chatbots are just one example.
Markov chain is a relatively simple [stochastic](stochastic.md) (working with probability) mathematical model for predicting or generating sequences of symbols. It can be used to describe some processes happening in the [real world](real_world.md) such as behavior of some animals, Brownian motion or structure of a language. In the world of programming Markov chains are pretty often used for generation of texts that look like some template text whose structure is learned by the Markov chain (Markov chains are one possible model used in [machine learning](machine_learning.md)). Chatbots are just one example.
There are different types of Markov chains. Here we will be focusing on discrete time Markov chains with finite state space as these are the ones practically always used in programming. They are also the simplest ones.
@ -38,4 +38,4 @@ Now it's pretty clear this description gets a bit tedious, it's better, especial
| C | 0.1 | 0.1 | 0.7 | 0.1 |
| D |0.25 |0.25 | 0.5 | 0 |
We can see a few things: the NPC can't immediately attack from cover, it has to search for a target first. It also can't throw two grenades in succession etc. Let's note that this model will now be yielding random sequences of actions such as [*cover*, *search*, *shoot*, *shoot*, *cover*] or [*cover*, *search*, *search*, *grenade*, *shoot*] but some of them may be less likely (for example shooting 3 bullets in a row has a probability of 0.1%) and some downright impossible (e.g. two grenades in a row). Notice a similarity to for example natural language: some words are more likely to be followed by some words than others (e.g. the word "number" is more likely to be followed by "one" than for example "cat").
We can see a few things: the NPC can't immediately attack from cover, it has to search for a target first. It also can't throw two grenades in succession etc. Let's note that this model will now be yielding random sequences of actions such as [*cover*, *search*, *shoot*, *shoot*, *cover*] or [*cover*, *search*, *search*, *grenade*, *shoot*] but some of them may be less likely (for example shooting 3 bullets in a row has a probability of 0.1%) and some downright impossible (e.g. two grenades in a row). Notice a similarity to for example natural language: some words are more likely to be followed by some words than others (e.g. the word "number" is more likely to be followed by "one" than for example "cat").

@ -24,7 +24,7 @@ Below are some of the most notable OSes.
- [Android](android.md)
- [BSD](bsd.md) systems such as [OpenBSD](openbsd.md) and [freeBSD](freebsd.md): Unix-like OSes
- [Collapse OS](collapseos.md)
- [DOS](dos.md), [FreeDOS](freedos.md)
- [DOS](dos.md)
- [FreeDOS](freedos.md)
- [GNU](gnu.md)/[Linux](linux.md) systems encompassing many [distributions](distro.md)
- [Haiku](haiku.md)
@ -39,4 +39,24 @@ Below are some of the most notable OSes.
- [Unix](unix.md)
- [Windows](windows.md): very bad [proprietary](proprietary.md) [capitalist](capitalist_software.md) OS
- [9front](9front.md): OS based on Plan 9
- ...
- ...
## LRS Operating System
What would an operating system designed by [LRS](lrs.md) principles look like? There may be many different ways to approach this challenge. Multiple operating systems (or multiple versions of the same system) may be made, such as as an "extremely KISS bare minimum featureless system", a "more advanced but still KISS system", a "special-purpose safe system for critical uses" etc. The following is a discussion of ideas we might employ in designing such systems.
The basic idea for a universal LRS operating system is to be something akin **[DOS](dos.md) plus a bit of [Unix philosophy](unix_philosophy.md)**. The system would probably seem primitive by "[modern](modern.md) standards", but in a [good society](less_retarded_society.md) it would be sufficient as a universal operating system (i.e. not necessarily suitable for ALL purposes). The OS would in fact be more of a **program loader** (like e.g. the one seen in [Pokitto](pokitto.md)), running with the same privileges as other programs -- its purpose would NOT be to provide a safe environment for programs to run in, but rather to allow switching between different programs on a computer without having to reupload the programs externally, and to provide basic tools for managing the computer itself (such as browsing files, testing hardware etc.).
Let's keep in mind that true LRS computers would be different from the current capitalist ones -- an operating system would only be optional, programs would be able to run on [bare metal](bare_metal.md) as well as under an OS, and operating systems would be as much compatible as possible. By this an OS might be seen as more of an extra tool rather than a platform.
The system might likely lack features one would nowadays call essential for an OS, such as multiple user support (no need if everyone has his own computer and [security](security.md) is not an issue), [virtual memory](virtual_memory.md), complex [GUI](gui.md) etc. There might even be no [multitasking](multitasking.md); a possibility to make a multitasking OS exists, but let's keep in mind that even such things as programs interacting via [pipes](pipe.md) may be somewhat implemented without it (using temporary buffer files into which one program's output is stored before running the next program).
The universal OS would assume well behaved programs, as programs would likely be given full control over the computer when run -- this would greatly simplify the system and also computing in general. Doing so would be possible thanks to non-existence of malicious programs (as in good society there would be no need for them) and eliminations of [update culture](update_culture.md). Users would only install a few programs they choose carefully -- programs that have been greatly tested and don't need to be updated.
**On user interface**: the basic interaction mode would of course be the text interface. Programs would have the option to switch to a graphical mode in which they would be able to draw to screen. There would be no such [bloat](bloat.md) as [window managers](window_manager.md) or [desktop environments](desktop_environment.md) -- these are capitalist inventions that aren't really needed as users practically always interacts with just one program at a time. Even in a multitasking system only one program would be drawing to the screen at a time, with user having the option to "alt-tab" between them. This would also simplify program greatly as they wouldn't have to handle bullshit such as dynamically resizing and rearranging their window content. If someone REALLY wanted to have two programs at the screen at the same time, something akin a "screen splitter" might be made to create two virtual screens on one physical screen.
**A bit more technical details**: the universal OS could simply be a program that gets executed after computer restart. This program would offer a [shell](shell.md) (textual, graphical, ...) that would allow inspecting the computer, configuring it, and mainly running other programs. Once the user chose to run some program, the OS would load the program to memory and jump to executing it. To get back to the OS the program could hand back control to the OS, or the computer could simply be restarted. If the program crashes, the computer simply restarts back to OS. The OS could also contain functions, kind of an [API](api.md), as part of its code that "userland" programs might call, e.g. for drawing to the screen, reading input etc. (just as e.g. a BIOS usually offers similar functions). Note that shell [scripting](script.md) that executes other programs could still be possible, e.g. by remembering the state of script execution in a file on disc. Same thing could be used for communicating between the OS and programs (e.g. clipboard), i.e. there would still be no need for multitasking.
TODO: more

@ -27,4 +27,9 @@ We can divide language in many more ways, for example based on their **[paradigm
- [LIL](lil.md): very nice KISS & [suckless](suckless.md) interpreted language
- [Lua](lua.md)
- [Sigma calculus](sigma_calculus): yes or no? seems like yes
- [Brainfuck](brainfuck.md): However funny and meme this language may look, its simple design is actually pretty beautiful and interpreters are ultra extremely simple to make.
- [Brainfuck](brainfuck.md): However funny and meme this language may look, its simple design is actually pretty beautiful and interpreters are ultra extremely simple to make.
## See Also
- [esoteric programming language](esolang.md)
- [constructed language](conlang.md)

@ -81,4 +81,5 @@ There are quite a few places on the Internet where you may find public domain wo
- **[Wikisource](https://en.wikisource.org/wiki/Main_Page)**: Repository of texts, similar to Project Gutenberg, same rules apply (not all texts here will be PD but the real old ones should be).
- **[Openclipart](http://openclipart.org)**: Vector graphics, all under [CC0](cc0.md), i.e. PD in theory, **however** there do appear pictures that are derivative works of copyrighted works for which of course this is irrelevant. Check very well anything you download from here.
- **[Blendswap](https://www.blendswap.com/)**: Site for exchanging 3D models for [Blender](blender.md), not all models are PD but the ones marked CC0 should be, however **NOT those marked as "fan art"!**
- **[Wikidata](https://www.wikidata.org/wiki/Wikidata:Main_Page)**: Database of "everything", published as a whole under [CC0](cc0.md) which should make it PD, **however** it will contain information about proprietary works which may make this status questionable sometimes. If you only use data that don't fall under this you should be safe.
- **[Wikidata](https://www.wikidata.org/wiki/Wikidata:Main_Page)**: Database of "everything", published as a whole under [CC0](cc0.md) which should make it PD, **however** it will contain information about proprietary works which may make this status questionable sometimes. If you only use data that don't fall under this you should be safe.
- ...

@ -15,7 +15,7 @@ Tangram is a simple, yet greatly amusing old puzzle [game](game.md) in which the
|________\_______\|
```
*Divide square like this to get the 7 tangram pieces.*
*Divide square like this to get the 7 tangram pieces. Note that the parallelogram is allowed to be flipped when creating shapes as it has no mirror symmetry (while all other shapes do).*
[LRS](lrs.md) considers tangram to be **one of the best games** as it is extremely [simple](kiss.md) to make and [learn](easy_to_learn_hard_to_master), it has practically no [dependencies](dependency.md) (computers, electricity, ... one probably doesn't even have to have the sense of sight), yet it offers countless hours of [fun](fun.md) and allows deep insight, there is [art](art.md) in coming up with new shapes, [math](math.md) in counting possibilities, good exercise in trying to [program](programming.md) the game etc.

@ -53,7 +53,7 @@ Triangles also play a big role e.g. in [realtime](realtime.md) [3D rendering](3d
[Sierpinski triangle](sierpinski_triangle.md) is a [fractal](fractal.md) related to triangles.
**Testing if point lies inside 2D triangle**: one way to do this is following. For each triangle side test whether the winding of the tested point and the side is the same as the winding of whole triangle -- if this doesn't hold for any side, the point is outside the triangle, otherwise it is inside. In order words for each side we are testing whether the tested point and the remaining triangle point are on the same side (int the same half plane). Here is a [C](c.md) code:
**Testing if point lies inside 2D triangle**: one way to do this is following. For each triangle side test whether the winding of the tested point and the side is the same as the winding of whole triangle -- if this doesn't hold for any side, the point is outside the triangle, otherwise it is inside. In order words for each side we are testing whether the tested point and the remaining triangle point are on the same side (in the same half plane). Here is a [C](c.md) code:
```
int pointIsInTriangle(int px, int py, int tp[6])

@ -47,6 +47,10 @@ Here are some [pro](pro.md) tips to git gud, impress your frens and generally ha
- A quick way to tell how good someone is is the damage deal to damage taken ratio -- once you deal more damage than take, you seize to be a complete noob. When you deal twice as much damage as you take, you are probably reaching a pro level. Of course, this also depends on opponents, mode you play etc., take this just as a quick estimate.
- If you're not doing well, complain about [lag](lag.md).
- **You can turn off the chat** in case there is some retarded conversation going on (just go to setting and HUD editor).
- In addition to chat you can also turn off opponent names if you just want to play without any distraction. Try e.g. `hud_panel_chat 0; hud_panel_centerprint 0;
hud_shownames 0; hud_panel_scoreboard_maxheight 0.01; hud_panel_notify
0; hud_panel_scoreboard_namesize 1; hud_panel_score 0; con_chatsound 0;
hud_panel_infomessages 0;`
- **Slap opponents to humiliate them**: the shotgun secondary fire is a melee slap, which is the best way to kill someone, partly because it's pretty hard to do (there's a delay before the bash). Another humiliating way to eliminate opponents is to kill them with Hagar secondary or push them off the map with blaster, crylink or even Mario kill (very rare -- you jump on someone's head while he's jumping over a pit which makes him fall down). Don't forget to taunt and [teabag](teabag.md).
- If you see someone running fast while crouching in air, he's probably a [pro](pro.md).
- **For more frags listen to sounds enemies make** -- if a player is low on health, he makes a distinct sound when hurt. You should listen to these sounds and just quickly hit these players e.g. with machine gun to get an easy kill.

Loading…
Cancel
Save