From eb91ebfbc924c98e78576c77b3182ca49af65345 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Sat, 18 Jun 2022 22:58:09 +0200 Subject: [PATCH] Update --- capitalism.md | 14 +++---- fixed_point.md | 101 +++++++++++++++++++++++++++++++++++++++++++------ whale.md | 9 +++++ 3 files changed, 105 insertions(+), 19 deletions(-) create mode 100644 whale.md diff --git a/capitalism.md b/capitalism.md index 3bd6ef4..e448fec 100644 --- a/capitalism.md +++ b/capitalism.md @@ -1,22 +1,22 @@ # Capitalism -*Capitalism is [cancer](cancer.md) of society.* +*"Capitalism is the astonishing belief that the most evil among men will for the nastiest motives work for the benefit of all."* -Capitalism is the worst economic system we've yet seen in the history.^[source](logic.md) Literally based on pure greed, abandoning all morals and putting profit above everything else including preservation of life itself, capitalism fuels the worst in people and forces them to compete and suffer for basic needs. Capitalism is anti-progress (see e.g. [antivirus paradox](antivirus_paradox.md)), anti-technology, anti-freedom, supports immense waste of resources, wars, abuse of people, destruction of environment, decline of morals, invention of [bullshit](bullshit.md), [torture](marketing.md) of people and animals and much more. Sadly, as it's been said, "it is easier to imagine the end of all life than any substantial change in capitalism." +Capitalism is the worst economic system we've yet seen in the history,^[source](logic.md) literally based on pure greed, abandoning all morals and putting profit above everything else including preservation of life itself, capitalism fuels the worst in people and forces them to compete and suffer for basic resources. Capitalism goes against progress (see e.g. [antivirus paradox](antivirus_paradox.md)), good technology, freedom, it supports immense waste of resources, wars, abuse of people, destruction of environment, decline of morals, invention of [bullshit](bullshit.md) (bullshit jobs, bullshit laws, ...), [torture](marketing.md) of people and animals and much more. Nevertheless, it's been truthfully stated that "it is now easier to imagine the end of all life than any substantial change in capitalism." -Capitalism produces the [worst imaginable technology](capitalist_software.md), and rewards people for [being cruel to others](entrepreneur.md). It also inevitably leads to societal [collapse](collapse.md); in capitalism people own nothing and become wholly dependent on corporations which exploit this fact to abuse them. This is achieved by [slowly boiling the frogs](slowly_boiling_the_frog.md). No one owns anything, products become services (your car won't drive without Internet connection and permission from its manufacturer), all independency and decentralization is lost in favor of a highly fragile and interdependent economy and infrastructure of services. Then only a slight break in the chain is enough to bring the whole civilization down. +Capitalism produces the [worst imaginable technology](capitalist_software.md) and rewards people for [being cruel to each other](entrepreneur.md). It points the direction of society towards a [collapse](collapse.md) and may very likely be the [great filter](great_filter.md) of civilizations; in capitalism people de-facto own nothing and become wholly dependent on corporations which exploit this fact to abuse them as much as possible. This is achieved by [slowly boiling the frog](slowly_boiling_the_frog.md). No one owns anything, products become services (your car won't drive without Internet connection and permission from its manufacturer), all independency and decentralization is lost in favor of a highly fragile and interdependent economy and infrastructure of services. Then only a slight break in the chain is enough to bring the whole civilization down. -The principal problem of capitalism lies in its **primary and only goal of self-benefit**, i.e. maximization of capital, combined with the fact that the environment of [free market](free_market.md) is a system with **Darwinian evolution** which through natural selection extremely effectively and quickly optimizes for the given goal, i.e. profit, on the detriment of all other values such as well being of people, sustainability or morality. In other words capitalism has never promised a good society, it literally only states that everyone should try to benefit oneself as much as possible, i.e. defines the [fitness function](fitness_function.md) purely as the ability to seize as many resources as possible, and then selects and rewards those who best implement this function, i.e. those we would call sociopaths or "dicks", and to those is given the power over society. In other words we simply get what we set to achieve: find entities that are best at making profit for any cost. The inevitable decline of society can not possibly be prevented by laws, any effort of trying to stop evolution by inventing artificial rules on the go is a battle against nature itself and is extremely naive, the immense power of the evolutionary system that's constantly in work to find ways to bypass or cancel laws in the way of profit and abuse of others will prevails just as life will always find its way to survive and thrive even in the worst conditions on Earth. The problem is not that "people are dicks", it is that we choose to put in place a system that rewards the dicks, a system that fuels the worst in people and smothers the best in them. +The principal problem of capitalism lies in its **primary and only goal of self-benefit**, i.e. maximization of capital, combined with the fact that the environment of [free market](free_market.md) is a system with **Darwinian evolution** which through natural selection extremely effectively and quickly optimizes the organisms (corporations) for achieving the given goal, i.e. making maximum profit, on the detriment of all other values such as well being of people, sustainability or morality. In other words capitalism has never promised a good society, it literally only states that everyone should try to benefit oneself as much as possible, i.e. defines the [fitness function](fitness_function.md) purely as the ability to seize as many resources as possible, and then selects and rewards those who best implement this function, i.e. those we would call sociopaths or "dicks", and to those is given the power over society. In other words we simply get what we set to achieve: find entities that are best at making profit for any cost. The inevitable decline of society can not possibly be prevented by laws, any effort of trying to stop evolution by inventing artificial rules on the go is a battle against nature itself and is extremely naive, the immense power of the evolutionary system that's constantly at work to find ways to bypass or cancel laws in the way of profit and abuse of others will prevails just as life will always find its way to survive and thrive even in the worst conditions on Earth. Trying to stop corporations with laws is like trying to stop a train by throwing sticks in its path. The problem is not that "people are dicks", it is that we choose to put in place a system that rewards the dicks, a system that fuels the worst in people and smothers the best in them. -Capitalism is not really an socioeconomic system, it is the failure to establish one -- this is what people mean when they say that capitalism [simply works](just_werks.md) or that it's *natural* -- it's the least effort option, one that simply lets people behave like animals. It is natural in the same way wars, murders, bullying and deadly diseases are. It is the most primitive system imaginable, it is uncontrolled, leads to suffering and self-destruction. +Even though it should be said that Capitalism is not really a traditional socioeconomic system, it is the failure to establish one, it is the continuation of the jungle -- this is what people mean when they say that capitalism [simply works](just_werks.md) or that it's *natural* -- it's the least effort option, one that simply lets people behave like animals. It is natural in the same way in which wars, murders, bullying and deadly diseases are natural. It is the most primitive system imaginable, it is uncontrolled, leads to suffering and self-destruction. ## How It Works -Capitalism newly instated in society kind of **works for a short time**, but it never lasts. Initially when more or less everyone is at the same start line, when there are no highly evolved corporations with their advanced methods of oppression, small businesses grow and take their small shares of the market, there appears true innovation, businesses compete by true quality of products, people are relatively free and it all feels natural because it is, it's the system of the jungle, i.e. as has been said, capitalism is the failure to establish a controlled socioeconomic system rather than a presence of a purposefully designed one. Its benefits for the people are at this point only a side effect, people see it as good and continue to support it. However the system has other goals of its own, and that is the development and constant growth that's meant to create a higher organism just like smaller living cells formed us, multi cell organisms. The system will start being less and less beneficial to the people who will only become cells in a higher organism to which they'll become slaves. A cell isn't supposed to be happy, it is supposed to sacrifice its life for the good of the higher organism. +Capitalism newly instated in a society kind of **works for a short time**, but it never lasts. Initially when more or less everyone is at the same start line, when there are no highly evolved corporations with their advanced methods of oppression, small businesses grow and take their small shares of the market, there appears true innovation, businesses compete by true quality of products, people are relatively free and it all feels natural because it is, it's the system of the jungle, i.e. as has been said, capitalism is the failure to establish a controlled socioeconomic system rather than a presence of a purposefully designed one. Its benefits for the people are at this point only a side effect, people see it as good and continue to support it. However the system has other goals of its own, and that is the development and constant growth that's meant to create a higher organism just like smaller living cells formed us, multi cell organisms. The system will start being less and less beneficial to the people who will only become cells in a higher organism to which they'll become slaves. A cell isn't supposed to be happy, it is supposed to sacrifice its life for the good of the higher organism. { This initial prosperous stage appeared e.g. in Czechoslovakia, where I lived, in the 90s, after the fall of the totalitarian regime. Everything was beautiful, sadly it didn't last longer than 10-20 years at most. ~drummyfish } -Slowly medium sized businesses will grow and become [corporations](corporation.md). These are the first higher order entities that have an intelligence of their own, they are composed of humans and technology who together work solely for the corporation's further growth. A corporation has a super human intelligence but has no human emotion or conscience, it is basically the rogue [AI](ai.md) we read about in sci-fi horror movies. Corporation selects only the worst of humans for the managers and has further mechanisms to eliminate any effects of human conscience and tendency for ethical behavior; for example it works on the principle of ["I'm just doing my job"](just_doing_my_job.md): everyone is just doing a small part of what the whole company is doing so that no one feels responsible for the whole or sometimes doesn't even know what he's part of. If anyone protests, he's replaced with a new hire. +Slowly medium sized businesses will grow and become [corporations](corporation.md). These are the first higher order entities that have an intelligence of their own, they are composed of humans and technology who together work solely for the corporation's further growth. A corporation has a super human intelligence but has no human emotion or conscience, it is basically the rogue [AI](ai.md) we read about in sci-fi horror movies. Corporation selects only the worst of humans for the management positions and has further mechanisms to eliminate any effects of human conscience and tendency for ethical behavior; for example it works on the principle of ["I'm just doing my job"](just_doing_my_job.md): everyone is just doing a small part of what the whole company is doing so that no one feels responsible for the whole or sometimes doesn't even know what he's part of. If anyone protests, he's replaced with a new hire. Corporations make calculated decisions to eliminate any competition, they devour or kill smaller businesses with unfair practices, more marketing and by other means, both legal and illegal. They develop advanced psychological methods and extort extreme pressure such as brainwashing by ads to the population to create an immensely powerful propaganda that bends any natural human thinking. With this corporations no longer need to satisfy the demand, they **create the demand** arbitrarily. They create artificial scarcity, manipulate the market, manipulate the people. At this point they've broken the system, it no longer works as before, they can do almost anything they want. diff --git a/fixed_point.md b/fixed_point.md index b3ef033..20f06b1 100644 --- a/fixed_point.md +++ b/fixed_point.md @@ -1,29 +1,106 @@ # Fixed Point -Fixed point arithmetic is a simple and often [good enough](good_enough.md) way of dealing with fractional (non-integer) numbers, as opposed to [floating point](float.md) which is from our point of view considered a bad solution for most programs. - -Probably in 99% cases when you think you need floating point, fixed point is actually what you need. +Fixed point arithmetic is a simple and often [good enough](good_enough.md) representation of [fractional](rational_number.md) (non-integer) numbers, as opposed to [floating point](float.md) which we consider a bad, [bloated](bloat.md) alternative (in most cases). Probably in 99% cases when you think you need floating point, fixed point is actually what you need. Fixed point has at least these advantages over floating point: +- **It doesn't require a special hardware coprocessor** for efficient execution and so doesn't introduce a [dependency](dependency.md). Programs using floating point will run extremely slowly on systems without float hardware support as they have to emulate the complex hardware in software, while fixed point will run just as fast as integer arithmetic. For this reason fixed point is very often used in [embedded](embedded.md) computers. - It is **easier to understand and better predictable**, less tricky, [KISS](kiss.md), [suckless](sukless.md). (Float's IEEE 754 standard is 58 pages long, the paper *What Every Computer Scientist Should Know About Floating-Point Arithmetic* has 48 pages.) -- **Doesn't require a special hardware coprocessor** and so doesn't introduce a [dependency](dependency.md). Programs using floating point will run extremely slowly on systems without float hardware support as they have to emulate the complex hardware in software, while fixed point will run just as fast as integer arithmetic. - Is easier to implement and so **supported in many more systems**. Any language or format supporting integers also supports fixed point. - Isn't ugly and doesn't waste values (positive and negative zero, denormalized numbers, ...). ## How It Works -Fixed point uses some fixed (hence the name) number of digits (bits in binary) for the fractional part (whereas floating point's fractional part varies in length). +Fixed point uses a fixed (hence the name) number of digits (bits in binary) for the integer part and the rest for the fractional part (whereas floating point's fractional part varies in size). I.e. we split the binary representation of the number into two parts (integer and fractional) by IMAGINING a radix point at some place in the binary representation. That's basically it. -So for example when working with 16 bit numbers, we may choose to use 12 bits for the integer part and the remaining 4 for the fractional part. This puts an imaginary radix point after the first (highest) 12 bits of the number in binary representation, like this: +So, **we can just use an integer data type as a fixed point data type**, there is no need for libraries or special hardware support. We can also perform operations such as addition the same way as with integers. For example if we have a binary integer number represented as `00001001`, 9 in decimal, we may say we'll be considering a radix point after let's say the sixth place, i.e. we get `000010.01` which we interpret as 2.25 (2^2 + 2^(-2)). The binary value we store in a variable is the same (as the radix point is only imagined), we only INTERPRET it differently. + +We may look at it this way: we still use integers but we use them to count smaller fractions than 1. For example in a 3D game where our basic spatial unit is 1 meter our variables may rather contain the number of centimeters (however in practice we should use powers of two, so rather 1/128ths of a meter). In the example in previous paragraph we count 1/4ths (we say our **scaling factor** is 1/4), so actually the number represented as `00000100` is what in floating point we'd write as `1.0` (`00000100` is 4 and 4 * 1/4 = 1), while `00000001` means `0.25`. + +This has just one consequence: **we have to [normalize](normalize.md) results of multiplication and division** (addition and subtraction work just as with integers, we can normally use the `+` and `-` operators). I.e. when multiplying, we have to divide the result by the inverse of the fractions we're counting, i.e. by 4 in our case (1/(1/4) = 4). Similarly when dividing, we need to MULTIPLY the result by this number. This is because we are using fractions as our units and when we multiply two numbers in those units, the units multiply as well, i.e. in our case multiplying two numbers that count 1/4ths give a result that counts 1/16ths, we need to divide this by 4 to get the number of 1/4ths back again (this works the same as e.g. units in physics, multiplying number of meters by number of meters gives meters squared.) For example the following integer multiplication: + +`00001000` * `00000010` = `00010000` (8 * 2 = 16) + +in our system has to be normalized like this: + +(`000010.00` * `000000.10`) / 4 = `000001.00` (2.0 * 0.5 = 1.0) + +With this normalization we also have to **think about how to bracket expressions** to prevent rounding errors and [overflows](overflow.md), for example instead of `(x / y) * 4` we may want to write `(x * 4) / y`; imagine e.g. *x* being `00000010` (0.5) and *y* being `00000100` (1.0), the former would result in 0 (incorrect, rounding error) while the latter correctly results in 0.5. The bracketing depends on what values you expect to be in the variables so it can't really be done automatically by a compiler or library (well, it might probably be somehow handled at [runtime](runtime.md), but of course, that will be slower). + +The normalization is basically the only thing you have to think about, apart from this everything works as with integers. Remember that **this all also works with negative number in [two's complement](twos_complement.md)**, so you can use a signed integer type without any extra trouble. + +Remember to **always use a power of two scaling factor** -- this is crucial for performance. I.e. you want to count 1/2th, 1/4th, 1/8ths etc., but NOT 1/10ths, as might be tempting. Why are power of two good here? Because computers work in binary and so the normalization operations with powers of two (division and multiplication by the scaling factor) can easily be optimized by the compiler to a mere [bit shift](bit_shift.md), an operation much faster than multiplication or division. + +## Implementation Example + +The following is an example of a simple [C](c.md) program using fixed point with 10 fractional bits, computing [square roots](sqrt.md) of numbers from 0 to 10. ``` -abcdefghijkl mnop -------------.---- +#include + +typedef int Fixed; + +#define UNIT_FRACTIONS 1024 // 10 fractional bits, 2^10 = 1024 + +#define INT_TO_FIXED(x) ((x) * UNIT_FRACTIONS) + +Fixed fixedSqrt(Fixed x) +{ + // stupid brute force square root + + int previousError = -1; + + for (int test = 0; test <= x; ++test) + { + int error = x - (test * test) / UNIT_FRACTIONS; + + if (error == 0) + return test; + else if (error < 0) + error *= -1; + + if (previousError > 0 && error > previousError) + return test - 1; + + previousError = error; + } + + return 0; +} + +void fixedPrint(Fixed x) +{ + printf("%d.%03d",x / UNIT_FRACTIONS, + ((x % UNIT_FRACTIONS) * 1000) / UNIT_FRACTIONS); +} + +int main(void) +{ + for (int i = 0; i <= 10; ++i) + { + printf("%d: ",i); + + fixedPrint(fixedSqrt(INT_TO_FIXED(i))); + + putchar('\n'); + } + + return 0; +} ``` -The whole number `abcdefghijkl` can take on values from 0 to 4095 (or -2048 to 2047 when using [two's complement](twos_complement.md) -- yes, fixed point works as signed type too). The fraction can take 16 (2^(4)) values, meaning we subdivide every whole number into 16 parts (we say our *scaling factor* is 1/16). +The output is: -You can also imagine it like this: when you e.g. write a 3D game and measure your dimensions in meters, fixed point just means considering a denser grid; so you just say your variables will count centimeters rather than meters and everything will just work. (Practically however you wouldn't use centimeters but power of 2 subdivisions, e.g. 256ths of a meter.) - -TODOOOOOOOOO \ No newline at end of file +``` +0: 0.000 +1: 1.000 +2: 1.414 +3: 1.732 +4: 2.000 +5: 2.236 +6: 2.449 +7: 2.645 +8: 2.828 +9: 3.000 +10: 3.162 +``` \ No newline at end of file diff --git a/whale.md b/whale.md new file mode 100644 index 0000000..8d414e6 --- /dev/null +++ b/whale.md @@ -0,0 +1,9 @@ +# Whale + +In online [pay to win](pay_to_win.md) [games](game.md) a whale is a player who spends enormous sums of money, much more than most of other players combined. They buy the most expensive items in the game stores daily, they highly engage in [microtheft](microtheft.md) and may throw even thousands of dollars at the game every day (cases of players spending over 1 million dollars on a casual game are known). In the playerbase there may exist just a handful of whale players but those are normally the main source of income for the game so that the developers actually focus almost exclusively on those few players, they craft the game to "catch the whales". The income from the rest of the players is negligible -- nevertheless the non-whales also play an important role, they are an attraction for the whales, they are there so that they can be owned by the whale players. + +Existence of whale players is one of the demonstrations of the [pareto principle](pareto.md) (80/20 rule): 80% of the game's income comes from 20% of the players, out of which, by extension, 80% again comes from the 20% and so on. + +The terminology can be extended further: besides **whales** we may also talk about **dolphins** (mid-spending players) and **minnows** (low spending players). Extreme whales are sometimes called **white whales** or **super whales** (about 0.2% generating 50% of income). + +In some games, such as [WoW](wow.md), players may buy multiple accounts and practice so called [multiboxing](multiboxing.md). This means they control multiple characters at once, often using [scripts](script.md) to coordinate them, which of course gives a great advantage. Though using scripts or "hacking" the game in similar ways is in other cases considered unacceptable [cheating](cheating.md) that results in immediate ban, for obvious reasons (money) developers happily allow this -- of course this just shows they don't give a single shit about fairness or balance, they only thing they care about is $$$profit$$$. \ No newline at end of file