From c44e879a84e254c21be57deb572e73423c8bc925 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Thu, 12 May 2022 20:53:59 +0200 Subject: [PATCH] Update --- acronym.md | 1 + crow_funding.md | 5 +++ fork.md | 13 +++++++ julia_set.md | 92 +++++++++++++++++++++++++++++++++++++++++++++++ left_right.md | 2 ++ mandelbrot_set.md | 88 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 201 insertions(+) create mode 100644 crow_funding.md create mode 100644 fork.md create mode 100644 julia_set.md create mode 100644 mandelbrot_set.md diff --git a/acronym.md b/acronym.md index 86248a9..1ed8f61 100644 --- a/acronym.md +++ b/acronym.md @@ -316,6 +316,7 @@ Here is a list of some acronyms: - **[UTC](utc.md)** (coordinated universal time) - **[UTF](utf.md)** (unicode transformation format) - **[UX](ux.md)** (user experience) +- **[VCS](vcs.md)** (version control system) - **[VOD](vod.md)** (video on demand) - **[VHS](vhs.md)** (video home system) - **[VIM](vim.md)** ([vi](vi.md) improved) diff --git a/crow_funding.md b/crow_funding.md new file mode 100644 index 0000000..e37fb66 --- /dev/null +++ b/crow_funding.md @@ -0,0 +1,5 @@ +# Crow Funding + +Crow funding is when a crow pays for your program. + +You probably misspelled [crowd funding](crowd_funding.md). \ No newline at end of file diff --git a/fork.md b/fork.md new file mode 100644 index 0000000..d399e74 --- /dev/null +++ b/fork.md @@ -0,0 +1,13 @@ +# Fork + +Fork is a branch that splits from the main branch of a project and continues to develop in a different direction as a separate version of that project, possibly becoming a completely new one. This may happen with any "intellectual work" or idea such as [software](software.md), movement, theory, literary universe or, for example, [database](database.md). Forks may later be *merged* back into the original project or continue and diverge far away, forks of different projects may also combine into a single project as well. + +For example the [Android](android.md) [operating system](os.md) and [Linux-libre](linux_libre.md) [kernel](kernel.md) have both been forked from [Linux](linux.md). [Linux distributions](distro.md) highly utilize forking, e.g. [Devuan](devuan.md) or [Ubuntu](ubuntu.md) and [Mint](mint.md) are forked from [Debian](debian.md). [Free software movement](free_software.md) was forked into [open source](open_source.md), [free culture](free_culture.md) and [suckless](suckless.md), and suckless was more or less forked into [LRS](lrs.md). [Wikipedia](wikipedia.md) also has forks such as [Metapedia](metapedia.md). [Memes](meme.md) evolve a lot on the basis of forking. + +Forking takes advantage of the ability to freely duplicate [information](information.md), i.e. if someone sees how to improve an intellectual work or use it in a novel way, he may simply copy it and start developing it in a new diverging direction while the original continues to exist and going its own way. That is **unless copying and modification of information is artificially prevented**, e.g. by [intellectual property](intellectual_property.md) laws or purposeful obscurity standing in the way of remixing. For this reason forking is very popular in [free culture](free_culture.md) and [free software](free_software.md) where it is allowed both legally and practically -- in fact it plays a very important role there. + +In software development temporary forking is used for implementing individual features which, when completed, are merged back into the main branch. This is called **[branching](branch.md)** and is supported by [version control systems](vcs.md) such as [git](git.md). + +**Is forking good?** Yes, to create anything new it is basically necessary to build on top of someone else's work, stand on someone else's shoulders. Some people criticize too much forking; for example some cry about [Linux](linux.md) [distro](distro.md) fragmentation, they say there are too many of them and that people should rather focus their energy on creating a single or at least fewer good operating system. [LRS](lrs.md) supports any kind of wild forking and experimentation, we believe the exploration of many directions to be necessary in order to find the right one. + +In fact we think forking should be incorporated on a much more basic level, in the way that the [suckless](suckless.md) community popularized. In suckless **everyone's copy of software is a personal fork**, i.e. software is distributed in source form and is so extremely easy to compile and modify that every user is supposed to do this as part of the installation process (even if he isn't a programmer). Before compilation user applies his own selected patches, custom changes and specific configuration (which is done in the source code itself) that are unique to that user and which form source code that is the user's personal fork. Some of these personal forks may even become popular and copied by other users, leading to further development of these forks and possible natural rise of very different software. This should lead to natural selection, survival and development of the good and useful forks. \ No newline at end of file diff --git a/julia_set.md b/julia_set.md new file mode 100644 index 0000000..9d326dd --- /dev/null +++ b/julia_set.md @@ -0,0 +1,92 @@ +# Julia Set + +TODO + +``` + ___________________________________________________________________ +| Julia Set for -0.34 - 0.63i :. | +| ..':. .. | +| '':.:''' .. .. | +| :':::.. '' ::. .. :.' | +| '::::. :: :::. . :.'': . | +| ......':::.::.:: ...::.:::.::.. . | +| :::::::::':'.':.::::::::':.::''::.. | +| . '::::'':':::':'':::' ::'' ' | +| ':. . .. ..::'::':::. ' :' | +| . :: :' ::..::::::: ::: ':::.. ' | +| :':::: '.:::::::::'.::::' '' | +| .:::::' ':::::::::. ''::::'. | +| :. '::::'.::::::::::. '::':.' | +| . . '':::. ::: ::::::::'::' .:::: | +| :':. ... ':::.:':::'' ' ' ''. | +| ..:: .::::::...':.::::::.: | +| :::...' '.::::::::'.: .:.:'::::'': | +| '' :. : .:''':' :::'::':::. ' ' | +| '::'': '' '::: ::''::::: | +| :: ':. '' '':::.: | +| ' ' ' ::.:.'.' | +| ::' | +| ' | +|___________________________________________________________________| +``` + + +# Code + +The following code is a simple [C](c.md) program that renders given Julia set into terminal (for demonstrative purposes, it isn't efficient or do any [antialiasing](antialiasing.md)). + +``` +#include + +#define ROWS 30 +#define COLS 70 +#define SET_X -0.36 // Julia set parameter +#define SET_Y -0.62 // Julia set parameter +#define FROM_X -1.5 +#define FROM_Y 1.0 +#define STEP (3.0 / ((double) COLS)) + +unsigned int julia(double x, double y) +{ + double cx = x, cy = y, tmp; + + for (int i = 0; i < 1000; ++i) + { + tmp = cx * cx - cy * cy + SET_X; + cy = 2 * cx * cy + SET_Y; + cx = tmp; + + if (cx * cx * cy * cy > 10000000000) + return 0; + } + + return 1; +} + +int main(void) +{ + double cx, cy = FROM_Y; + + for (int y = 0; y < ROWS; ++y) + { + cx = FROM_X; + + for (int x = 0; x < COLS; ++x) + { + unsigned int point = + julia(cx,cy) + (julia(cx,cy + STEP) * 2); + + putchar(point == 3 ? ':' : (point == 2 ? '\'' : + (point == 1 ? '.' : ' '))); + + cx += STEP; + } + + putchar('\n'); + + cy -= 2 * STEP; + } + + return 0; +} +``` diff --git a/left_right.md b/left_right.md index b4a0b18..ea95099 100644 --- a/left_right.md +++ b/left_right.md @@ -26,6 +26,8 @@ What's called *left* in the [modern](modern.md) western culture usually means *p The difference between left and pseudoleft can be shown in many ways; one of them may be that pseudoleft always wants to **[fight](fight_culture.md)** something, usually the right (as they're essentially the same, i.e. natural competitiors). True left wants to end all fights. Pseudoleft invents [bullshit](bullshit.md) artificial issues such as [political correctness](political_correctness.md) that sparks conflict, as it lives by conflict. Left tries to find peace by solving problems. Pseudoleft sees it as acceptable to do bad things to people who commited something it deems bad. True left knows that violence creates violence, it "turns the other cheek", it cures hate with love. +Pseudoleft is extra harmful by deceiving the public into thinking what it does really is leftist. Most normal people that don't think too much therefore stand between a choice of a lesser of two evils: the right and pseudoleft. True left, the true good, is not known, it is overshadowed. + Why is there no pseudoright? Because it doesn't make sense :) Left is good, right is a sincere evil and pseudoleft is an evil pretending to be good. A good pretending to be evil doesn't probably exist in any significant form. **Centrism** means trying to stay somewhere mid way between left and right, but it comes with issues. From our point of view it's like trying to stay in the middle of good and evil, it is definitely pretty bad to decide to be 50% evil. Another issue with centrism is that it is **unstable**. Centrism means balancing on the edge of two opposing forces and people naturally tend to slip towards the extremes, so a young centrist will have about equal probabilities of slipping either towards extreme left or extreme right, and as society polarizes this way, people become yet more and more inclined to defend their team. Knowing centrism is unsustainable, we realize we basically have to choose which extreme to join, and we choose the left extreme, i.e. joining the good rather than the evil. \ No newline at end of file diff --git a/mandelbrot_set.md b/mandelbrot_set.md new file mode 100644 index 0000000..f50dd1c --- /dev/null +++ b/mandelbrot_set.md @@ -0,0 +1,88 @@ +# Mandelbrot Set + +TODO + +``` + ___________________________________________________________ +|[-2,1] . | +| .:. | +| ::::: | +| ...:::.. . | +| :..:::::::::::::.... | +| .:::::::::::::::::::' | +| :::::::::::::::::::::::: | +| :::::::::::::::::::::::::' | +| :..:::. .:::::::::::::::::::::::::: | +| .:::::::::. :::::::::::::::::::::::::: | +| .. ::::::::::: :::::::::::::::::::::::::' | +| ' ' '::':::::::::::'::::::::::::::::::::::::. | +| ::::::::::: :::::::::::::::::::::::::: | +| ':::::::' ::::::::::::::::::::::::::. | +| ' ''' :::::::::::::::::::::::::' | +| '::::::::::::::::::::::::' | +| ''::::::::::::::::::::'' | +| :::::::::::::::::::: | +| ' ''::::::::'': | +| .:::. | +| ':::' | +| : | +|___________________________________________________[0.5,-1]| +``` + +## Code + +The following code is a simple [C](c.md) program that renders the Mandelbrot set into terminal (for demonstrative purposes, it isn't efficient or do any [antialiasing](antialiasing.md)). + +``` +#include + +#define ROWS 30 +#define COLS 60 +#define FROM_X -2.0 +#define FROM_Y 1.0 +#define STEP (2.5 / ((double) COLS)) + +unsigned int mandelbrot(double x, double y) +{ + double cx = x, cy = y, tmp; + + for (int i = 0; i < 1000; ++i) + { + tmp = cx * cx - cy * cy + x; + cy = 2 * cx * cy + y; + cx = tmp; + + if (cx * cx * cy * cy > 1000000000) + return 0; + } + + return 1; +} + +int main(void) +{ + double cx, cy = FROM_Y; + + for (int y = 0; y < ROWS; ++y) + { + cx = FROM_X; + + for (int x = 0; x < COLS; ++x) + { + unsigned int point = + mandelbrot(cx,cy) + (mandelbrot(cx,cy + STEP) * 2); + + putchar(point == 3 ? ':' : (point == 2 ? '\'' : + (point == 1 ? '.' : ' '))); + + cx += STEP; + } + + putchar('\n'); + + cy -= 2 * STEP; + } + + return 0; +} +``` \ No newline at end of file