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.

Friday, May 17, 2019

Synergetics

I’m not convinced RBF would have designed domes the way they are commonly designed. Usually, they are designed to minimize the number of piece sizes, and to minimize the thickness of the dome surface. In contrast, RBF disparaged not only cartesian coordinates, but also classical emphasis upon regularity. Classical regularity is great (group theory is all about regularity), but I find irregularity easier to design. Simply choose random planes, and make a dome from the facets between the inside and outside of the space. Such a dome would have a thick surface in which humans could live, leaving the inside of the dome for plants and animals.

Sunday, May 5, 2019

Cospace

Every region in a roundspace has an opposite and is not peripheral. Producing a roundspace from a space is easy, and results in boundaries through a center point. The boundaries through the center point map to points on a section plane in the cospace. Sections of the roundspace are great circles formed by planes through the center point. Vertices in the roundspace have diameters through the center which map to subvertices in the cospace section. The cospace section has boundaries mapped to vertices in the roundspace. By adding an equator plane to the roundspace, the cospace section has one region per roundspace section. The cospace section has peripheral regions. Thus depending on roundspace rotation, there are special sections in the space, corresponding to peripheral regions in the cospace section.

Thursday, May 2, 2019

Humanity

I’m curious what thoughts others would have while reading Kathryn Yusoff. Whites were the ones that killed the Neanderthals. Other races killed species, but were not killed by species. The survivors of the battle with Neanderthals were the most ruthless ones. Thus, whites built castles to lord it over peasants. Thus whites built ships to lord it over nonwhites. Thus whites built mines to lord it over nonhumans. Thus whites built corporations to lord it over nonvalues. Conservative character building is not enough. Liberal supplication (case in point) is not enough. To break the wheel, the dragon queen needs nonwhite values, nonwhite grades, nonwhite supporters, nonwhite language, nonwhite identity, nonwhite vitality, nonwhite technology, and nonwhite geography.

Thursday, April 25, 2019

Perspective

A perspective is a maximal set of paths through a focal region, such that each path crosses each boundary once and only once.

Because paths cross boundaries only once, regions and vertices after the boundary all have the same sidedness wrt the boundary. Thus path sidedness is well defined and equivalent to space sidedness.

Sidedness of a boundary wrt a vertex and perspective is whether a path reaches the boundary or one of the vertice’s regions first.

Note that the point of convergence of lines perpendicular to the base in the numeric space is in some particular outside region. Thus, there is a symbolic perspective that makes numeric sidedness wrt vertices equivalent to symbolic sidedness wrt vertices.

Write algorithms to go back and forth between a numeric space and a numeric cospace, with one boundary per vertex, and one boundary per vertex at infinity.

Complete the construction proof by noting that the algorithms do not use the choice function.

Tuesday, April 23, 2019

Accessibility

Definitions:

A sub-vertex is any n or fewer boundaries, where n is the dimension of the space. The boundaries are said to contain the sub-vertex.

A vertex is a sub-vertex, where n boundaries contain the vertex.

A nonempy region and sub-vertex are attached iff there is a nonempty region with sidedness identical to the attached region, except wrt every boundary containing the sub-vertex.

A vertex is on the same side as each of its regions wrt a boundary if the boundary does not contain the vertex.

A vertex is accessible to a boundary dividing a super region iff the vertex can be on either side of the boundary without changing which side of the boundary the super region’s vertices are on.

Theorem:

A vertex is inaccessible iff there is a simplex-super-region by which the vertex is inaccessible to the dividing boundary.

Proof:

If the vertex is inaccessible, adding boundaries will not make it accessible, so on to the only if part.

The entire outside of the given super-region is covered by base and vertex regions of simplex-super-regions, so complete the proof by choosing one the given vertex is in.

Sunday, April 21, 2019

Proof

I think I have another way to prove that every linear symbolic space is constructible as a numeric space. It is by induction on number of boundaries, and assumes a numeric cospace is constructible from a numeric space. By classification of the numeric cospace, the symbolic space has a symbolic cospace. To complete the proof I must prove every section of the symbolic space is a region in the symbolic cospace. Using a perspective, sections have sidedness wrt vertices. Consider a section of the symbolic space. I must show the section’s region in the cospace is not empty. Choose a point in the numeric cospace corresponding to a region in the symbolic cospace, a numeric, and a symbolic boundary in the space. Move the point across attached boundaries matching to section sidedness wrt vertices in the space. In some region of the cospace, the considered section is the same as the moved boundary wrt space vertices of attached cospace boundaries. Assume for contradiction that the point differs from the considered section wrt some vertex, called the contradiction vertex. In the cospace, choose a perspective that puts the contradiction boundary and an attached boundary on the same side of the attached region. That perspective in the space puts the contradiction vertex and a vertex attached to a region, in the considered section, divided by the moving boundary, on the same side of the considered section and moving boundary. This contradiction completes the proof.

Tuesday, February 5, 2019

Graphics

I wanted to eliminate my geometry shader so I could brag that my microcode runs fast, but I also wanted to show off my facets. The idea of decorating facets with pictures gave me an aha when I realized it would make rotation about the normal more useful. But for some time I could not figure out how to feed texture coordinates to the vertex shader. Note that duplicating the points was unacceptable to me, not because of memory constraints, but for aesthetic reasons; duplicating points violates topological reality. Since limiting planes to have at most one facet is acceptable to me, disallowing kissing vertices is ok, and facets separate polytope regions from non-polytope regions, I can limit vertices to have at most 3 facets in 3 dimensions. Then the challenge was to get the vertex shader to choose the correct texture color, texture weights, and texture coordinates. I wondered if each facet could be assigned a tag valid for all of its vertices. All the vertex shader need do is lookup its texture vectors by a uniform tag. Assigning a tag to each facet is a graph coloring problem. Using a greedy algorithm, no more than n+1 graph colors are needed, where n is the maximum degree of the graph nodes. Here, graph nodes are polytope facets, graph connections are shared polytope vertices, and graph colors are facet tags. A facet can have any number of vertices, but in 3 dimensions, it can be decomposed into 3 vertex facets. Modify the greedy algorithm to assign the same tag to facets in the same decomposition. Triangle facets have 6 vertex sharing neighbors, so 7 tags are needed. Thus each vertex needs 3 texture vectors, and the tag uniform needs to be changed 7 times.

Monday, February 4, 2019

Minimalism

There are several kinds and fields of minimalism. I know enough art theory and history to claim ignorance about art minimalism. Minimalism with a capital M has come to mean small houses or few possessions. But small and few are poorly defined; say small or few to a mathematician, I dare you. Minimalism in software language means Lua and such. Minimalism in software design means user interfaces like double dash files that melt the distinctions between automation, configuration, and interaction. Minimalism in backpacking can mean ultra-light and/or general purpose. Backpacking mores can be applied to behavior in general. Leave only footprints and take only pictures translates to minimize your carbon footprint and respect indigenous priority. Does one opt for high tech or tried and tested. Does one prefer expert approved or do it yourself. Does one keep a clean living space or minimize the amount of manintenance. Does one emulate a storage, workshop, or ship? Engineers claim to admire simplicity, but each interprets the word differently. Some lean towards architecture, and adopt descriptive identifiers and formulaic comments. I lean away from architecture, and opt for shorter identifiers, fewer lines of code, and imaginative comments. I take a similar approach to society. Corporate life is a bath of deception and secrecy. The claimed merit is productivity, but in practice that means toeing the line. Methodology claims to enhance reuse, but actually just makes marketing easier by reducing innovation. Similar dynamics occur in other hierarchical parts of society. Trickle down economics claims to raise all boats, but actually just crams more sardines into the same can.

Sunday, January 27, 2019

Double Dash

I've become disillusioned. Open source is ugly; IDEs are ugly; big data is ugly. The only UI that brings me joy is my double-dash syntax. Only files are a way to communicate to a command line program that reads files with .-- extensions. If you want to change the mode that the program is running in, then you have to append to a .-- file that was given to the program at invocation. Every -- in a .-- file starts a command, no matter where it occurs. If a -- occurs before a command gets all the arguments it expects, then the interrupted command fails. Anything not matching the argument format is ignored. Stop trying to make computers more like people. Just find a common denominator. One command opens one window. Multiple instances of that command can share, or own, files given to the command on its command line. Only files are given on a command's command line; command line arguments that are not files are ignored. Obviously, simultaneous commands can share files, so I do need pthreads to read files as they are appended to. No other overhead is necessary. Everything else is innovation. Stop reinventing the wheel. No matter how profitable reinvention is, and how unprofitable true invention is, just express.

Monday, January 14, 2019

Innovation

Innovation is not a football in the battle between libertarian and socialist. Innovation is the field. Let’s give libertarians some intellectual credit, and assume they know that what socialists refer to as innovation comes from government and universities. Libertarians have as many words for profit as escimoes have for snow, and to a libertarian, innovation is a form of profit. They may quibble that innovation is a source of profit, but just as snow is a source of ice, it is all profit to a libertarian. When libertarians argue for less government, they are arguing for less of what socialists call innovation. Both libertarians and socialists have a point. Government gave us fracking as well as internet. Big government is imperialist, because building up alternatives before tearing down traditions accumulates advantage. Let the ideologues argue over more or less; the future is what kind. Until government stops being timid and greedy, and starts destroying as well as feeding corporations, we will stay on the current track to climate breakdown.