Why?

I chased the mad rabbit down this very deep hole because I had to. I was working on creating a "book" of sorts about geometry, which I called "Action Geometry". This book will still probably get written after Geometron is done. But I immediately ran into a whole mess of problems with the available software. I wanted to mix math on a computer with compas and straightedge geometry, and I became very frustrated with how the various tools I was using were all disconnected. At the same time I was and still am working on writing up various projects to create technology out of trash.

I wanted a unified way to communicate about technology. The more I worked on the problem the more I felt that this is fundamental to all technological work: bad software is slowing down progress. Some software is bad because it's too specialized, other software because it's hard to use, other software because it's been deliberately broken as is the case with Adobe's deliberate breaking of bitmap features in Illustrator and vector graphics in Photoshop. Meanwhile pdf format is, again due to the nefarious behavior of Adobe, deliberately frustrating to work with and bloated.

I will look now at the broader picture: what were all the pieces of software I need to do work in applied physics and communicate about it? Here is a list of some of that software:

Frustration mounted. The project I called Action Geometry started to look more and more like a language. I built a working version in the Processing programming language, and a control panel out of wood and trash which used the Arduino to input commands over serial. This started getting more and more elaborate, and was increasingly going in a direction of obscurity. I wanted to build something other people could use and spent some months trying to convince more people to use Processing. The problem is that non programmers find learning a C-like language from scratch an impediment while programmers want to keep using what they're already using. Furthermore, as more and more work is done not on desktop or laptop computers but on mobile devices. All options were bad.

Using the Processing language led to using the processing.js library which led to learning javascript, which led to learning how to make html work well with javascript, which led to learning CSS and to a whole worldview. That worldview is that the web browser is the single most important computer in the world today.

What The Riddle of Steel?

According to the Conan Wiki, the answer to the Riddle of Steel is this:

"Flesh grows weak. Steel becomes brittle. But the will is indomitable."

Quite simply the will of the human mind is the motor that drives our world. Computer "scientists" draw diagrams in a make believe space and draw little ones and zeros in them, but this is nothing. It is fiction, part of a delusional religion.

The equivalent from our age of the Riddle of Steel is the Riddle of Silicon. Just as a young Conan the Barbarian must learn that the true power that rests in a steel sword is not the strength of the actual material steel, but the will of the wielder of that sword, so must the technologist of today understand that raw computation power of a silicon machine is nothing without the imagination of the minds that use it and create it. And unlike a computer, those minds operate in a world of art, not computation.

What is a Computer?

We're told by the very name that a "computer" is a machine that computes. In other words it does "math", or "computations", adding, subtracting, Boolean logic, and various repetitions of these operations. While this is "true" in a purely reductionist sense, this worldview has deep problems. Computer "science" draws diagrams of what is supposedly a computer based on the "Turing Machine".

Where do computes come from? How are they created? We're taught it happens in something called a "fab" or fabrication facility, where rows of workers in "bunny suits" move wafers around and modify the molecular composition of the surfaces of those wafers. But this is no more where they come from than the shipping company which moves the box from the factory to the store. Where does it all actually begin?

The story of every computer begins in the human mind. And the only way for that story to get from the mind to metal and flesh is through artistic communication. An idea must be communicated in such a powerful way that the mind whose will is to be expressed by the computer must be able to imprint their desires on many other minds, or least on the mind of another who can in turn influence others.

And what exactly is the moment of genesis of a computer? I would argue it is generally when someone who wants to build a computer makes their case to those who have the power to organize resources to make the silicon fabrication actually happen. This is not something that happens in a lab with silicon, it is something that generally happens with an impassioned speech delivered with visual aids which in todays world almost always involve Microsoft Powerpoint or Apple's Keynote. And what exactly is Powerpoint? It is mainly a container for art of a fantastically universal kind: a mixture of different graphical media, with a few words interspersed to give the graphic arts more specific meaning.

After this moment, how does a computer reproduce itself? This might seem a silly question, since of course the physical silicon comes from a factory, but again it misses the point of the Riddle of Steel/Silicon. Factories close or grow. It is human will that decides which of these will happen, and we must examine what drives that will. The real fraud of "silicon valley" is that the people who push the actual silicon have taken credit for the reproduction of a system that is not driven by silicon at all: it is, like the genesis event described above, driven entirely by art. The most powerful entities in modern computers are those that control the art: facebook, twitter, snapchat, tumblr...these are all, like powerpoint, containers for art.

Twitter made billionaires out of its founders and made governments fall by essentially turning the "computer" into a poetry engine. This is one possible explanation for the fantastic power of Twitter in the Islamic world: the most powerful written work in that world(the Koran) is in the form of poetry. Facebook did the same thing with notes, journal entries, and amusing pictures, etc. And it is these enablers of art which have caused the billions of users to flock to "computers" and come to rely on them, not their actual math operations. And those users bought vast numbers of designed-to-fail phones which they had to constantly replace, and that is why those factories that actually push silicon around all day keep the lights on.

To summarize the life cycle of a "computer" in these terms then, it is an idea communicated by art, which then deploys the vast infrastructure of modern industrial society to build machines which are then used to spread art rapidly between the masses who dedicate some of their labor to procuring the money required to keep the machine that builds machines running, so they can make more art. Some of those people will present art to those who got rich owning this machine, and if that art is effective they will be granted the power to make more art machines. That's all. Do they compute? Sure. But to focus on that is to miss the point just as focusing on the exact type of cardboard of the boxes the machines are shipped in misses the point.

The universe is quite capable of computing without us. The universe is, according to our current world view, already a vast quantum computer, carrying out more computations in a given cubic centimeter than our species will in its whole lifetime, and with full quantum accuracy. So we're not building computers to somehow add to the basic computing ability of the world around us. No, we build computers to connect the human mind to that computer which already exists. And the human mind will always have an art layer that is fundamental to how it interacts with the world. In some cases this will be words, in some cases pictures, but in both cases, the other will be not far away(pictures with words, words with pictures).

Another core fraud of "silicon valley" is in the name. Aside from the fact that the current robber barons are in San Francisco, which is not a valley, no aspect of their fortune is due to silicon. They are primarily a group of bandits who have inserted themselves between the most powerful art engine in human history and the humans who use it. In another time, with other infrastructure, they might have been called highwaymen, but in many cases we just call them "governments": the group of people who use violence and threats of it to extract value from everyone who uses a commonly needed resource. A core goal of this work is to create a vector for artistic tools to spread without this group of bandits being involved at all, in hopes of breaking some of their stranglehold on modern society.

Laws of Geometron

These are the laws of Geometron. As this is a project created by a non-believer in what some people call the "rule of law", I must clarify what it even means for there to be laws of Geometron. They are laws in the same way that all physical theories have laws. I believe that the reductionist worldview we are taught in school about what a physical law is is directly contradicted by experience. Newton's "laws" of motion are a fantastic way to codify the information about how things move, but to say that they are an absolute description of the universe outside of our minds which was discovered and not created is not supported by observation of how humans use these laws. We know that there are numerous exceptions and caveats to these "laws", including relativity, which make them not absolute Truths in the way fundamentalists in religion use that word. I would argue that laws like Newton's law of motion, like laws like Moore's law of growth in semiconductor figures of merit, are created by the human mind, not discovered, because just about everything is. Modern science has vastly overstated our ability to access the true universe outside of our language and minds. And in that spirit I put these laws forth as a guide for working with this thing I have created in my mind: Geometron.

I will now go through each of these laws and discuss what they mean.

EVERYTHING IS FRACTAL. By this I mean that one idea to constantly keep in mind when designing a system with Geometron is that we should always focus on the relevant scale in a given situation. One of the problems I have with modern industrial technology is that everything is set to the maximum possible precision by default. For example, due to the economies of scale of microfabrication, we fabricate microchips in huge batches on wafers that are several 10's of cm across but have precision of all components on the 100 nm level. A Geometron based approach to microfabrication would not have a single precision, because the goals are different on a human level. If I'm fabricating one processor for my own use, I don't care about the same things as Intel or Motorola and view this more as a craft than an "industry" in the modern sense. And as with all crafts, there will be some slop built in based on what scale I'm working at. Thus, I might place the overall work area into position on a cm scale, fix the tool position on a mm scale, scan it with 10 micron precision, and then have a sub-tool affixed to it which can fill in details on a sub micron scale. I might also have another sub-tool affixed to that which can work at the atomic scale, but in all cases the relative position uncertainty is not smaller than 1%.

In software situations, the number of pixels in a field determines a reasonable level of precision in most cases. Thus for a 1000x1000 pixel area, 0.1% is the maximum that it ever makes sense to care about. Realistically this is far more than we usually care about, though, since for example an icon on a desktop might be just a few pixels across, making it have a relative precision locally of a few percent. Also, the exact position of the icon on the desktop relative to the overall screen shape is almost certainly not less than a few percent. While these statements might seem obvious and trivial they are at odds with the behavior of engineers in almost all cases, especially when computers are involved.

A final note on "everything is fractal" must be made on the limits of this law. I find the work of Mandelbrot in his book on the fractal geometry of nature to be pathalogical because it assumes a totally non-physical range of fractals. In reality the world around us is almost always described by fractal structure, but that fractal nature always has limitations. A leaf has veins in it which repeat in their behavior on multiple scales, but only up to a point: below the scale of a few leaf cells vein-like behavior is lost, and while vein like nature may exist in the branches that carry the leaves, it stops at the forrest level, and there is a clear phase change between leaf-vein and branch. Ideas like those of Mandelbrot, like those of Newton mentioned above, can be both powerful and beautiful, but to view them as absolute truths with an existence independent of the human mind, with infinite extent in some imaginary universe is just religious nonsense and is holding back our ability to build more robust technological systems.

EVERYTHING IS RECURSIVE. Fractals and recursion go together like peas and carrots. Recursion is when something makes reference to itself. Human language is by its very nature recursive. We use language to build language, constantly using words that reference words, sentences about sentences, books about books, ideas about ideas and so forth. By stating in black and white that everything is recursive we remind ourselves to always be thinking of this aspect of language and to use it constantly to make it as natural and easy to use as possible. As with the fractal nature of things recursion should be considered to be both everpresent and finite. That is, things can call themselves but they should not do so too many times, creating infinite loops. Infinite loops are non-physical which brings us to the next law:

EVERYTHING IS PHYSICAL.A popular quotation in physics is from Rolf Landauer, which says "information is physical". This is quoted repeatedly in both mesoscopic physics and quantum computation theory. I'm not sure what this is supposed to mean, but I'm skeptical of its intent. What does it mean for a thing to be physical? What is a thing that exists and how do we distinguish it in language from that which does not exist? I'm not sure there are easy answers to these questions. My observation from an anthropological view is that this phrase "information is physical" is used by physicists to denote the type of pontification that they are about to engage in, just as "there be dragons here" is used to denote humorous intent in regards to the incomprehensible in physics theory. In Geometron I use the "law" that everything is physical to simply state a philosophical view that the "non physical" is not a thing that is of use to us. This is no more or no less a proper scientific statement than "information is physical", but it is a position statement for a body of work. Either things are as you see them and feel them and interact with them or they are nothing. Disembodied ones and zeros on an imaginary tape in an imaginary space don't exist. Everything is either real or not. And real things can be interacted with. For the record, this is a position in which string theory is not a science, and is a poor excuse for a religion.

NO MONEY. Money is, like so many things we take for granted, just a model. It has its place and has been very productive in some spheres. However, in software it has had an extremely corrosive effect on everything. Software and money, when combined, always create injustice and evil. I state this without proof. If it is not obvious to the reader our world views are totally incompatible. However, just was we all use knowledge created by people from hundreds of years ago with totally different ideology from our own, it should be possible for those who believe software and money can coexist without doing Evil to use this work. Just don't expect cooperation or collaboration of any kind from the author or anyone working directly with the author. The work directly documented in this first version of this manuscript is released for free into the world, and will be further worked on as much for free as possible. I'm not sure how to make a living and survive in capitalist America this way, but I would rather fail at that than participate willingly in what I see as pure Evil, so this is my choice.

NO PROPERTY. Property is Evil. I will not attempt to argue with the reader on this subject. This is a belief I have come to through hard experience of what I consider to be Evil, with a capital "E". Accept it or not. But for the purpose of this project I reject any form of property, "intellectual" or otherwise. By the power vested in me by the evil "laws" of the propertarians, I release all my work presented here into the public domain with no restrictions whatsoever. I have reached a point in my life where I have decided to fight for what I believe in, to the death if needed, and I believe the claim to own an idea is evil.

NO MINING. The current industrial system consists of the following process: dig things up, use them to make people miserable, set them on fire, and bury them in the ground. It is time to break this cycle. Writing a piece of art software in javascript is hardly a major blow to all this, but it is another law of this project to at least attempt to minimize mining in all cases. That is why the physical implementations of Geometron are all built from trash when possible.

Long Term Goals of Geometron

Geometron, defined precisely, is a meta-language. That is it is a language created to be used to create actual languages. One does not create things in Geometron itself, one creates a Geometron instance, which is itself a language, then creates things with that language. The long term goals are therefore defined by specific goals in creating instances which can be used for various applications. I will now list some of those.

Creation of a class of map-making languages which smooth the process of non-experts quickly generating and using map data using computers. Some basic examples of this will be given in this work in regards to transit maps and treasure maps with some explanations of how to extend it. But a long term goal of this is to create a whole set of mapping dialects used by many different people in the field, which can grow and change and be maintained by those who need them.

Creation of self-documenting objects, like the "spime" concept popularized by Bruce Sterling. Ideally any given physical object will be described in a language which is also used by other similar machines. The information encoded in the artifact should be both human and machine readable and require all that is needed to replicate itself. This is the main long term goal of my work, as part of building what I call a "technological complete set", documented elsewhere.

Electronic lab notebooks remain a frustrating problem, and they are one I want to address at least for my own use with Geometron. In the short term I want to be able to create my own scientific and technical documents and records on the fly as I work, and the longer term goal for that project is to add a social element which blurs the line between peer reviewed archival research publications and the day to day data generation of what we now call a "lab notebook".

Another very ambitious long term goal that connects with the "spime" concept and the technological complete set mentioned above is the eventual replacement of the ubiquitous "smart phone" and tablet devices with something truly free.

Full Structure and Geometron Hypercube

This section is, in some sense, the true heart of Geometron. As I said in the beginning, Geometron is two things: a set of geometric commands, and a way of organizing information, including those commands. That organizing method is what I call the "Geometron Hypercube".

All Geometron commands or symbols belong in one of eight layers, each of which consists of two 8 × 8 tablets. One is actions and one is symbols. Actions described by three digit addresses, a leading zero followed by one number from 0 to 7 denoting which tablet the address is in, one number for the row and one for the column of the given element of the tablet. Each address is a container for a sequence of Geometron addresses. The symbol addresses all begin with a "01", meaning another bit is added to the base 8 address number.

One way to think of the whole Geometron Hypercube is as a function which maps each point in a four dimensional array of cells back into itself, putting a one dimensional array of addresses in each address. The process by which this is done in computer code is with a colon separating an address from the address sequence contained at that address. This format is called "bytecode" and is one of several ways Geometron might be expressed. Geometron bytecode typically looks like this:

01345:0202,0200,0350,0334,0343,0335,0304,
01202:0202,0200,
Each address after the colon is separated by a comma, and each line is separated by a "newline" character, generally denoted by "\n" when using javascript or a number of other similar languages. All this may sound strange since so far I have presented all Geometron commands as part of a purely graphical language. Those glyphs fit into the fourth layer up from zero as shown in the following table:

I began with that table since it's the one the reader has already seen in earlier chapters. But I will now go back to the beginning to define the whole stack. I'll start with a table of the whole stack then go through the layers:
Action Type Action Range Symbol Type Symbol Range color
Math Actions 0700-0777 Math Symbols 01700-01777 orange
Words 0600-0677 phrases 01600-01677 navy
Image URLs 0500-0577 Image Names 01500-01577 yellow
Manuscript Glyphs 0400-0477 Manuscript Text 01400-01477 green
Geometry Actions 0300-0377 Geometry Symbol Glyphs 01300-01377 red
Shape Actions 0200-0277 Shape Symbols 01200-01277 blue
Font1 040-0176 font2 01040-01176 white
Root Magic Actions 00-037 Root Magic Symbol Glyphs 01000-01037 purple
All of these will be dealt with in their own chapters, as will the overall structure of this table in the main web browser based implementation of Geometron on which this book is built. That will be the topic of the next chapter.

Layers in the Fourth Dimension(cubes in Ana/Kata)

  1. 0xxx: Geometron actions
  2. 01xxx: Geometron symbols
  3. 02xxx: Roctal physical encoding in bit-grid data, 4x4 with 3x3 for 9 bit byte
  4. 03xxx: javascript code
  5. 04xxxx: html code
  6. 05xxxx: CSS code
With this structure of the full hypercube it's possible to impose more logic on the first two cubes. paragraphs can get moved from 014xx to 06xx with the rest of the words, or not depending on the needs of the given task. This can make everything fully recursive since words can call words if paragraphs, like words, are actions. It would make the 06xx's a totally recursive system all based on the 040-0176 range. 05xx can be the literal image, encoded physically in the medium as a literal bit map. The 03xx layer that is all javascript would then get elevated to 033xx, and 03xx would also be literal/physical, or It should have a description using 040-0176.

Much of the hypercube is empty in most instances. Each cube in the hypercube is a self contained stack of tablets, each tablet is 8x8 and context determines which cube is being called by a given machine.

The JavaScript function doTheThing() is by default referencing the 03xxx cube, but context implies this so it's just 0xxx where 03xx are the geometry actions. Images are img tags in html in the html layer so they're actually at 045xx in the full hypercube.

May 9 2017 rework again, focus on two layers(cubes), one is symbol and one is action. That's it. doTheThing() processes all, but differently for different parts. Some are js operating on globals(03xx), some are js operating on DOM to build things. 0400s should be this. 01xx are *always* symbols.

Back to Basics Hypercube:

Actions:

  1. 0-037:root magick, js on DOM, does not change from one document to another. root magick needs to be extended to include building different shapes and sizes of canvas to pour "currentGlyph" into. Must have a two op code action to start dumping actions into currentGlyph, then write them to the canvas(or svg).
  2. 037-0176:font, changes as needed
  3. 0200-0277:shape table, call itself and 03xx, contains only Geometron action code
  4. 0300-0377:javascript that gets eval()'d to operate on geometric global variables
  5. 0400-0477:Scroll, calls root magick to build canvases, calls words and paragraphs to insert them as html, calls latex equations to insert them as html
  6. 0500-0577:images, includes URL, description, source and destination shape and size for complete map relative to either the cursor's position and size or an img objects position from upper left and size. set global variable for caption to current caption, set global variable for image URL to that, set globals for image mapping to that. this is javascript that gets eval'd which sets all these globals
  7. 0600-0677: words and text. html and raw ASCII. Raw ASCII can go in the top of the page by convention, but they're all treated the same
  8. 0700-0777: javascript functions to get eval()'d to create calculators. Use javascript actions on DOM to build the equations in mathjax, then run the mathjax typesetter to make it look good

Symbols:

  1. 01000-01037:symbol glyphs
  2. 01040-01176:standard font that matches physical keyboard's symbols as close as possible
  3. 01200-01277:symbol glyphs
  4. 01300-01377:symbol glyphs
  5. 01400-01477:Names of sections in scroll for linked table of contents(this is multiply fractal)
  6. 01500-01577: thumbnails that scale to size of spelling symbol glyphs
  7. 01600-01677:More words, doubling number of words available, this is all more html, with some conceptual link to its little sibling
  8. 01700-01777:equation symbols, each is just an equation, which can get inserted anywhere. This has no dollars signs or javascript, so it can get automatically used by scripts that make real latex from our geometron bytecode
Now in order to implement this I must complete the following tasks: To implement physical printer, what specs are needed? Perhaps for minium functionality each print could just be a single cell. Then if each cell is 40X40 bytes or 1600 total bytes maximum that's 40X4 = 160 units on a side. If a unit is 1 mm that's 160 mm or 16 cm. This seems like a good initial target for proof of concept. Then A machine must be built to process these tablets.