From c81a62c894e18b38f238256ef2a8679493317f34 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Fri, 3 Nov 2023 23:15:36 +0100 Subject: [PATCH] Update --- bitreich.md | 2 +- fail_ab.md | 2 +- feminism.md | 2 +- main.md | 2 +- sw_rendering.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bitreich.md b/bitreich.md index 3d35fff..74195c8 100644 --- a/bitreich.md +++ b/bitreich.md @@ -4,7 +4,7 @@ Bitreich is a small, obscure underground group/movement of programmers who greatly value [minimalism](minimalism.md)/[simplicity](simplicity.md), oppose the [evil](evil.md) and degeneration of [modern](modern.md) mainstream technology and aim for making the world a better place mainly through simpler [technology](tech.md). They seem to belong to the cluster of "minimalist programmer groups", i.e. they are similar to [suckless](suckless.md) (which in their manifesto they see as a failed project), [reactionary software](reactionary_software.md) and our very own [LRS](lrs.md), sharing many values such as [minimalism](minimalism.md), [Unix philosophy](unix_philosophy.md), preference and love of the [C](c.md) language, carrying on some of the [hacker culture](hacking.md) heritage, though of course they also have their own specifics that will make them different and even disagreeing with us and others on occasion, e.g. on [copyleft](copyleft.md) (unlike us, they seem to greatly prefer the [GPL](gpl.md)), terminology (yeah, they seems to prefer "[open source](open_source.md)") and probably also things like [privacy](privacy.md) (though the craze doesn't seem to go too far, many have listed their real names and addresses) etc. -According to the gopherhole Bitreich started on 17.8.2016 -- one of the top members (maybe even the founder) seems to be 20h (Christoph Lohmann according to the user profile) who even gave an interview about the project to some radio/magazine/whatever. It seems they are based in Germany. As of 2023 they list 12 official member profiles (the number of lurker followers will of course be a much high number, there seem to be even bitreich subcommunities in other countries such as Italy). They are mostly present on [gopher](gopher.md) (gopher://bitreich.org), which they greatly promote, and [IRC](irc.md) (ircs://irc.bitreich.org:6697/#bitreich-en). There are also [Tor](tor.md) hidden services etc.; their website at bitreich.org seems to be purposefully broken in protest of the [web](web.md) horror. +According to the gopherhole Bitreich started on 17.8.2016 -- the founder (or at least one of them?) seems to be 20h (Christoph Lohmann according to the user profile), a guy formerly active in [suckless](suckless.md) (can be found on their website), who even gave an interview about Bitreich to some radio/magazine/whatever. It seems Bitreich originated in Germany. As of 2023 they list 12 official member profiles (the number of lurker followers will of course be a much high number, there seem to be even bitreich subcommunities in other countries such as Italy). They are mostly present on [gopher](gopher.md) (gopher://bitreich.org), which they greatly promote, and [IRC](irc.md) (ircs://irc.bitreich.org:6697/#bitreich-en). There are also [Tor](tor.md) hidden services etc.; their website at bitreich.org seems to be purposefully broken in protest of the [web](web.md) horror. Some of their ideas and philosophy seems to be very based, e.g. preference of KISS/older protocols (gopher, ftp, IRC, ...), "users are programmers" (opposing division into users as consumers and developers as overlords), "bug reports are [patches](patch.md)", "programs can be [finished](finished.md)" etc. diff --git a/fail_ab.md b/fail_ab.md index d52ef19..aba77c5 100644 --- a/fail_ab.md +++ b/fail_ab.md @@ -5,7 +5,7 @@ Type A and type B fails are two very common cases of failing to adhere to the [L - **type A fail**: Is anticapitalist, anticonsumerist, may incline towards minimalism, supports [free software](free_software.md) and [free culture](free_culture.md), may even be a vegan, [anarchist](anarchism.md), [C](c.md) programmer etc., however falls into the trap of supporting [pseudoleft](pseudoleft.md), e.g. [LGBT](lgbt.md) or [feminism](feminism.md) and things such as censorship ("[moderation](moderation.md)", [COCs](coc.md)), "just violence and bullying" (violence against fascists, e.g. [antifa](antifa.md)), falls for memes such as "[Rust](rust.md) is the new [C](c.md)". - **type B fail**: Is against [pseudoleft](pseudoleft.md) bullshit and propaganda such as political correctness, is a [racial realist](racial_realism.md), highly supports [suckless](suckless.md) software, hacking and minimalism to achieve high freedom, usually also opposes [corporations](corporation.md) and state, however falls into the trap of being a [fascist](fascism.md), easily accepts violence, believes in "natural selection/wild west as a basis of society", supports and engages in [cryptocurrencies](crypto.md), believes in some form of [capitalism](capitalism.md) and that the current form of it can be "fixed" (["anarcho" capitalism](ancap.md) etc.) -Both types are furthermore prone to falling a victim to [privacy](privacy.md) obsession, [productivity](productivity_culture.md) obsession, [hero worshipping](hero_culture.md), use of violence, [diseases](disease.d) such as [distro hopping](distro_hopping.md), [consuerism](consumerism.md) and similar defects. +Both types are furthermore prone to falling a victim to [privacy](privacy.md) obsession, [productivity](productivity_cult.md) obsession, [hero worshipping](hero_culture.md), use of violence, [diseases](disease.d) such as [distro hopping](distro_hopping.md), tech [consumerism](consumerism.md) and similar defects. Type A/B fails are the "great filter" of the rare kind of people who show a great potential for adhering to LRS. It may be due to the modern western culture that forces a [right](right.md)-[pseudoleft](pseudoleft.md) false dichotomy that even those showing a high degree of non-conformance eventually slip into the trap of being caught by one of the two poles. These two fails seem to be a manifestation of an individual's true motives of [self interest](self_interest.md) which is culturally fueled with great force -- those individuals then try to not conform and support non-mainstream concepts like free culture or sucklessness, but eventually only with the goal of self interest. It seems to be extremely difficult to abandon this goal, much more than simply non-conforming. Maybe it's also the subconscious knowledge that adhering completely to LRS means an extreme loneliness; being type A/B fail means being a part of a minority, but still a having a supportive community, not being completely alone. diff --git a/feminism.md b/feminism.md index 3769c29..07d824f 100644 --- a/feminism.md +++ b/feminism.md @@ -2,7 +2,7 @@ *Sufficiently advanced stupidity is indistinguishable from feminism.* --[drummyfish](drummyfish.md)'s law -Feminism, also feminazism, is a [fascist](fascism.md) [terrorist](terrorism.md) [pseudoleftist](pseudoleft.md) movement aiming for establishing female as the superior gender, for social revenge on men and gaining political power, e.g. that over [language](political_correctness.md). Similarly to [LGBT](lgbt.md), feminism is violent, [toxic](toxic.md) and [harmful](harmful.md), based on [brainwashing](brainwashing.md), mass hysteria, [bullying](bullying.md) (e.g. the [metoo](metoo.md) campaign) and [propaganda](propaganda.md). +Feminism, also feminazism, is a [fascist](fascism.md) [terrorist](terrorism.md) [pseudoleftist](pseudoleft.md) movement aiming for establishing [female](woman.md) as the superior gender, for social revenge on men and gaining political power, e.g. that over [language](political_correctness.md). Similarly to [LGBT](lgbt.md), feminism is violent, [toxic](toxic.md) and [harmful](harmful.md), based on [brainwashing](brainwashing.md), mass hysteria, [bullying](bullying.md) (e.g. the [metoo](metoo.md) campaign) and [propaganda](propaganda.md). [LMAO](lmao.md), this just sums up the feminist ways: **a supposed woman writer who won 1 million euro prize turned out to actually be three men writers**, see Carmen Mola :) diff --git a/main.md b/main.md index 4e33cb4..4fbefe6 100644 --- a/main.md +++ b/main.md @@ -14,7 +14,7 @@ DISCLAIMER: All opinions expressed here are facts. FFF FFF FFF FFF FFF FFF .FF' 'FF. FFF FFF. .FFF FFF' FFF 'FFF FFF' .FF' 'FF. 'FFF 'FFF. .FFF' FFF .FFFFF FFF FFF .FF' 'FF. FFF - FFF. .FFF FFF .FFFFFFFFF. FFF FFF .FF:,,,,,,,,,:FF. FFF + FFF. .FFF FFF .FFFFFFFFF. FFF FFF,,,,,.FF:,,,,,,,,,:FF.,,,,,FFF 'FFF FFF' FFF .FFF' FFF 'FFF. FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF. .FFF FFF. .FFF' FFF 'FFF. .FFF FFF. .FF' 'FF. .FFF 'FFF FFF' FFF..FFF' FFF 'FFF..FFF FFF..FF' 'FF..FFF diff --git a/sw_rendering.md b/sw_rendering.md index e525a34..c00e65c 100644 --- a/sw_rendering.md +++ b/sw_rendering.md @@ -22,7 +22,7 @@ Some SW renderers make use of specialized CPU instructions such as [MMX](mmx.md) { In case [small3dlib](small3dlib.md) is somehow not enough for you :) ~drummyfish } -Difficulty of this task depends on features you want -- a super simple [flat shaded](flat_shading.md) (no textures, no smooth [shading](shading.md) renderer is relatively easy to make, especially if you don't need movable camera, can afford to use [floating point](float.md) etc. See the details of [3D rendering](3d_rendering.md), especially how the GPU pipelines work, and try to imitate them in software. The core of these renderers is the **[triangle](triangle.md) [rasterization](rasterization.md)** algorithm which, if you want, can be very simple -- even a naive one will give workable results -- or pretty complex and advanced, using various optimizations and things such as the [top-left rule](top_left_rule.md) to guarantee no holes and overlaps of triangles. Remember this function will likely be the performance [bottleneck](bottleneck.md) of your renderer so you want to put effort into [optimizing](optimization.md) it to achieve good [FPS](fps.md). Once you have triangle rasterization, you can draw 3D models which consist of vertices (points in 3D space) and triangles between these vertices (it's very simple to load simple 3D models e.g. from the [obj](obj.md) format) -- you simply project (using [perspective](perspective.md)) 3D position of each vertex to screen coordinates and draw triangles between these pixels with the rasterization algorithm. Here you need to also solve [visibility](visibility.md), i.e. possible overlap of triangles on the screen and correctly drawing those nearer the view in front of those that are further away -- a very simple solution is a [z buffer](z_buffer.md), but to save memory you can also e.g. [sort](sorting.md) the triangles by distance and draw them back-to-front ([painter's algorithm](painters_algorithm.md)). You may add a [scene](scene.md) data structure that can hold multiple models to be rendered. If you additionally want to have movable camera and models that can be transformed (moved, rotated, scaled, ...), you will additionally need to look into some [linear algebra](linear_algebra.md) and [transform matrices](transform_matrix.md) that allow to efficiently compute positions of vertices of a transformed model against a transformed camera -- you do this the same way as basically all other 3D engines (look up e.g. some [OpenGL](opengl.md) tutorials, see model/view/projection [matrices](matrix.md) etc.). If you also want texturing, the matters get again a bit more complicated, you need to compute [barycentric](barycentric.md) coordinates (special coordinates within a triangle) as you're rasterizing the triangle, and possibly apply [perspective correction](perspective_correction.md) (otherwise you'll be seeing distortions). You then map the barycentrics of each rasterized pixel to [UV](uv.md) (texturing) coordinates which you use to retrieve specific pixels from a texture. On top of all this you may start adding all the advanced features of typical engines such as [acceleration structures](acceleration_structure.md) that for example discard models that are completely out of view, [LOD](lod.mf), instancing, [MIP maps](mip_map.md) and so on. +Difficulty of this task depends on features you want -- a super simple [flat shaded](flat_shading.md) (no textures, no smooth [shading](shading.md)) renderer is relatively easy to make, especially if you don't need movable camera, can afford to use [floating point](float.md) etc. See the details of [3D rendering](3d_rendering.md), especially how the GPU pipelines work, and try to imitate them in software. The core of these renderers is the **[triangle](triangle.md) [rasterization](rasterization.md)** algorithm which, if you want, can be very simple -- even a naive one will give workable results -- or pretty complex and advanced, using various optimizations and things such as the [top-left rule](top_left_rule.md) to guarantee no holes and overlaps of triangles. Remember this function will likely be the performance [bottleneck](bottleneck.md) of your renderer so you want to put effort into [optimizing](optimization.md) it to achieve good [FPS](fps.md). Once you have triangle rasterization, you can draw 3D models which consist of vertices (points in 3D space) and triangles between these vertices (it's very simple to load simple 3D models e.g. from the [obj](obj.md) format) -- you simply project (using [perspective](perspective.md)) 3D position of each vertex to screen coordinates and draw triangles between these pixels with the rasterization algorithm. Here you need to also solve [visibility](visibility.md), i.e. possible overlap of triangles on the screen and correctly drawing those nearer the view in front of those that are further away -- a very simple solution is a [z buffer](z_buffer.md), but to save memory you can also e.g. [sort](sorting.md) the triangles by distance and draw them back-to-front ([painter's algorithm](painters_algorithm.md)). You may add a [scene](scene.md) data structure that can hold multiple models to be rendered. If you additionally want to have movable camera and models that can be transformed (moved, rotated, scaled, ...), you will additionally need to look into some [linear algebra](linear_algebra.md) and [transform matrices](transform_matrix.md) that allow to efficiently compute positions of vertices of a transformed model against a transformed camera -- you do this the same way as basically all other 3D engines (look up e.g. some [OpenGL](opengl.md) tutorials, see model/view/projection [matrices](matrix.md) etc.). If you also want texturing, the matters get again a bit more complicated, you need to compute [barycentric](barycentric.md) coordinates (special coordinates within a triangle) as you're rasterizing the triangle, and possibly apply [perspective correction](perspective_correction.md) (otherwise you'll be seeing distortions). You then map the barycentrics of each rasterized pixel to [UV](uv.md) (texturing) coordinates which you use to retrieve specific pixels from a texture. On top of all this you may start adding all the advanced features of typical engines such as [acceleration structures](acceleration_structure.md) that for example discard models that are completely out of view, [LOD](lod.mf), instancing, [MIP maps](mip_map.md) and so on. Possible tricks, cheats and [optimizations](optimization.md) you may utilize include: