Tuesday, April 25, 2023

Survival

 Historically it was only life that had to worry about survival. Recently civilization has to worry about survival, because of nuclear weapons and fossil fuel. Survival of civilization vs survival of corporations is one thing nuclear weapons and fossil fuel have in common. Another is how corporations distort language to survive. Because corporations cannot exist without their product, they invent phrases like mutual assured destruction or climate change to divert blame for their threat against civilization from their product to society or the individual. That difference between the scapegoat is one difference between nuclear weapons and fossil fuel. We are meant to believe elites control the number of nuclear weapons, and consumers control the amount of fossil fuel. In fact, corporations control both, and the only way to survive is to eliminate companies that threaten survival.

Wednesday, March 29, 2023

Competition

 Corporations are more cooperative than they would like us to believe. Their bottom line and relation to other companies in their industry are less important than survival to them. That may seem obvious to us, since we understand survival is necessary fro a bottom line, but corporations are brainless; they don’t understand necessary or sufficient. Take oil majors, for example; they just want to survive, even if it kills employees that they need to survive. And other oil majors help their survival, so calling them competitors is misleading. The only companies that threaten the survival of oil majors are new companies that don’t exist yet. But the United States of Business has prohibited us from forcing new companies into existence; that’s communism. The thing they have not thought of to prohibit yet is the removal of their license to do business, one at a time, the worst one first, as deemed by voters.

Saturday, February 4, 2023

Dichotomy

 Arguably the most significant dichotomy is what the climate community calls social vs individual. Often it is couched in terms of responsibility. Should we blame individual consumers, tasking them with reducing fossil fuel purchases, or should we blame society, hoping for it to protect our survival with regulation, legislation, or litigation? What neither interpretation of that dichotomy acknowledges is the existence of corporate collectives. That businesses exist is not controversial; they have names. How they relate to individuals and society is never questioned, because the language has been perverted. The businesses themselves have, over centuries, redefined society and individual for their own purposes. The purpose of each corporation is to survive. By defining themselves out of the society individual dichotomy, they eliminate their existence from question. In fact, both corporations and society, as they define it, are collectives. So, it behooves us to trip up the corporations by ignoring their redefined individual society dichotomy, and focus on the individual collective dichotomy. That elides the natural artificial dichotomy, but that is a matter for another post. For now, it is parsimonious to distinguish between democracy and corporations; both are collectives. The difference between democratic collectives and corporate collectives is that individual members of corporations are unaware of their influence over the corporation, but individuals in democracies, also known as voters, are aware of their influence, or lack thereof, over the democracy. Awareness is important; democracy presents a better hope for survival than business as usual. The only thing businesses have not already used to put each other out of business, the only thing that is not business as usual, is to exclude particular businesses from commerce, or as it is to them, existence. If the existence of businesses is left up to businesses, the ones that threaten the fewest businesses will survive. If the existence of businesses is left up to democracy, only the responsible ones will survive. The survival of collectives must be subordinate the the survival of individuals; otherwise nothing survives, not even life itself.

Saturday, August 22, 2020

Keyboard Video Mouse

 Objective-C is horrible, and Xcode is a nightmare. Swift is pretty good though. It is easier to not use the object oriented bits of Swift than it is to avoid classes in C++. Type parameterized functions and classes in Swift are much easier to use than are templates in C++. Having containers builtin to the language is nice in Swift instead of including templates with impenetrable error messages in C++. Immutables and strict typing are nice in Swift, but for true functional programming with powerful searchable types not biased against function types, only Haskell will do. Lua is the only scripting language that results in code worth checking in. The best thing from GNU is make, but only if it is used properly, without implicit dependencies or rules, and without too many defines or includes. Every compiler has its quirks. Apple's compilers are the worst, with the most implicit paths, but they are still useable; I hope their frequent "updates" do not make things worse. An application on MacOS requires a call to NSApplication.shared to start, a linked list of classes between, and a call to MTLCommandBuffer:commit at the end. There are various forms of callback, including functions passed to NSEvent, functions in derivations of a class passed to a link in the list, or functions in derivations of links in the list. Passing functions to NSEvent is easiest, but some events unfortunately require derivation. MacOS makes it impossible to smoothly change a display in response to moving a window, so polytopes must appear unfortunately related to the MacOS frame. Reading Apple developer documentation is reverse engineering, and my intxface code on sourceforge is the only complete application I know of that uses make and Metal without MetalKit and Xcode.

Sunday, August 4, 2019

Untitled

Are generalizations bad? In general, is it a mistake to say something about everything? Given two sets in an unknown universe, what can we do with them? Taking the compliment is out, but some binary operations are ok. The intersection makes a set no closer to the scary universe, so that's fine. The difference also is ok. But the union makes something that may or may not be the universe. If we have a shorthand for everything, then how do we know when increasingly complex unions lose information? Losing information is bad because it wastefully heats up the thing that loses the information. In general, life evolves by reducing waste. Workers reduce waste by unionizing. Is this a pun or generalization?

Sunday, July 21, 2019

Topological Unsort

To implement program with multiple languages, the languages must communicate. C is an interface language; most other languages have a C interface. We organize data in C programs with struct and union. To communicate between C and other languages data is converted to and from struct/union. Threads and processes send messages, each of which is a different struct/union. Most languages are more powerful than C, so they can restrict portions of their data organization to conform to C struct/union. When there are many different struct/union types to send, it can become arduous to change the corresponding data types in each language. Preferably, a script would automatically generate the struct/union types in each language. Each field of a struct/union can be a pointer to one or more other contiguous struct/union instances, an array, a basic type, an enumeration type, or a string. Each field can have validity dependent on other fields, called tags. Think of the tags as dimensions; tag values are a tag space. Each field is valid in a subset of the tag space. C is limited in that without an unwieldy number of identifiers, struct/union can not have a unique representation for every point in the tag space. Instead, consecutive fields should have similar tag space subsets. My script to generate struct/union types in several languages, takes as input lists of fields, each with a tag space subset. Consecutive fields or unions with equal tag space subsets collect into structs. Consecutive fields or structs with disjoint tag space subsets collect into unions. A tag space subset opens a union. A tag space superset closes structs and unions. A topological sort of the graph is the original list of fields.

State File Sets

It is common for an application to have state that persists between invocations. It is limiting to think of an application or its state in the singular. It is confusing for an application’s state to be hidden or unreadable. Instead, go with the Unix concepts of text files and processes, such that the processes state is completely determined by the content of text files given to it at invocation. At any one time, there can be multiple instances of an application, running in parallel. As a process’ state changes, the changes are captured by one or another of the text files given to it at invocation. Two processes with the same given text files would be in the same state.