Saturday, January 30, 2016

Privatization: The Scotese Process

This can be done without the blessing or involvement of the federal government.  All land "owned" by the BLM belongs to the American people.  ANY ONE of those people is perfectly within his rights to choose a parcel and publish that its ownership can be re-designated through a "Scotese Process."

A "Scotese Process" is a commons privatization process through which all interested parties are compensated for their interest proportional to whatever amount of money they are willing to give up to keep that interest.  Here's how it works:

One or more escrow companies defines the commons (parcel of land in this case) to be privatized, and advertises its willingness to manage the process for a fee.  Interested parties are then invited to secure their interest by offering a price for the commons and pre-paying a percentage of that price to the escrow company.  Once the invitation period ends, a synchronizing process must be undertaken.

The synchronizing process requires that all escrow companies who may have defined a Scotese Process that interferes with another escrow compnay's Scotese Process work out the differences.  This can and should be an ongoing effort to eliminate all possible conflicts.  The "staking of a claim" has similar properties, whereby a claimant must define the boundaries in a way that doesn't interfere with already-defined boundaries.  The outcome of a synchronization process is one of two possibilities.  Either there is general recognition that all escrow companies have accepted the same definition of a particular commons, or there is not.  The process can (and usually will) continue until the first outcome is achieved.  On the other hand, difficult-to-define commons may cause (all) interested escrow companies to abandon their Scotese Process.

Once there is general recognition of the definition of the commons, there still may be multiple escrow companies interested in administering the privatization.  In this case, they simply compare their highest-bidders to see who wins, and each escrow company submits the required pre-payment to the others on behalf of their own winner.  In this way, a single owner emerges.

When this single owner is found, the escrow company (or companies) compute(s) the total of the bids to determine what portion of the final price each interested party will receive as compensation for their interest in the commons, by dividing that total by the interested party's bid.  The winning bidder then submits payment in full to his escrow company, and the escrow company divides the proceeds among the other bidders, and refunds their prepayments to them as well.  The entire Scotese Process goes into a public court of record so that everyone will know who the new owner of the commons is, and also see who "sold" their interest to that new owner.

Escrow companies in the synchronization process may find it worth their while to combine their efforts and normalize their processes and act as a single escrow company in this context.  There are several variables that escrow companies will need to specify in their public announcement of the Scotese Process, including the percentage of a price that must be prepaid to secure an interest, the deadline for bids, the definition of the commons to be privatized, and the fee they require for providing the escrow service (to be deducted from the final sale price before it is divided up among losing bidders).

The Scotese Process is something I invented but I have never seen it tried (beyond trivial examples in my own house).  I'm sure there are possibilities for failure, and if anyone can point them out so that I might revise the process to avoid them, that would be greatly appreciated.

Sunday, January 10, 2016

Notes on the JavaScript Bitcoin wallet by pointbiz

Software is based on language.  The languages have definite meaning which can (normally) be constrained to produce predictable results when interpreted by a machine.  Conscious awareness is not required to use the language of software to turn input into output.  Hats off to Viktor Frankl for identifying conscious awareness (in human beings) as the place where we find freedom.

As anyone who has employed their conscious awareness to understand things knows, you can always go deeper into the meaning of language.  Software engineers necessarily do this in order to ply their trade.  How deep one has gone into the language they are using to program a machine varies greatly.  The notes I present below are intended for someone like me who has the same goal I had when I wrote them, and who had the same understanding I had when I wrote them.

Brett Veinotte of the School Sucks Project inspired me to realize that we are all creating content that has the potential to be everlasting.  The effects of our lives are everlasting and there's nothing we can do about that.  Some of us (me, for example) don't want to do anything about it.  We live honorably and wish our effects on the universe to last.  My future plans for this post are very vague.  I may update it from time to time, or I may leave it as is forever.

I read through this top hit for the Google search javascript array"primary types" to write this blog. In Javascript, there are three primary types from which everything else is built.  Object is not a primary type, but it is a fundamental concept in Javascript.  It is a collection of properties, each having a name (of primitive type String), and a value (of any primitive type, so String, Number, or Boolean, or a non-primitive type, like Object).  Several useful things in Javascript are Objects, and they are all duplicates of the basic Javascript Object, which provides them with some useful properties, like Prototype.

The first thing bitaddress.org's code does is add a property to the Prototype property of the Array Object (the Prototype property is, itself, an Object too).  The Array Object necessarily exists in all implementations of Javascript because that is one of the things that makes it Javascript.  However, some implementers (Microsoft) don't provide that Array Object with all the properties that the Javascript community likes to use.  They have to provide the Prototype property in order to call their language Javascript, but they don't have to give that Prototype a method called map.  And we like map.  It lets us do something to all the elements of an array.

The Prototype property is what gets duplicated into a new Object whenever a new instance is created, as in x = new Array(); or x = []; bitaddress.org's first task is to give all of the Array objects created that way a new function called map if if they won't already get one.  The implementation of map() is published at http://es5.github.com/#x15.4.4.19

The next task accomplished by the code is to ensure that there is a variable named Crypto which has a property named util.  If not, it creates an object named Crypto and assigns it as a property of an object named window which is assumed to exist (reasonable, since this Javascript is expected to run in a browser).

The implementation of SHA256 comes next and is assigned as a property to the Crypto object.  The property is named SHA256 and the function is short and sweet (calling another function which does the dirty work, _sha256).  The return value of that function uses the condition ? ifTrue : ifFalse operator twice in succession without parentheses.  The "Associativity" of this "Conditional operator" is right-to-left which means the last (right-most) one is evaluated before the one preceding it.  If that were not the case, there would be a point in this code at which the programmer was choosing between a byte array and a boolean, which is silly.

The longest line in the file I analyzed is image data at 181,786 characters.  A cursory review of this file will not identify the presence of '; [malicious code]; image +=' in the long lines contained by the templateArtisticHtml function definition.  For this reason I did some regex searches on the file.

I verified that the file contains only one line on which a single-quote follows a semicolon and it is good code.  I also verified that the 9 nine lines containing a double-quoted string of at least 100 characters and which have a semicolon somewhere after that all contain good code.