21st Century Smart Cities

Much of the fabric of society for the last several hundred years is based on the geographical and social structure of the city. The city touches on virtually every aspect of the lives of almost everyone in the world. Using ubiquitous internet access, it becomes possible to fundamentally reinvent much of the basic fabric of the industrial world.

Continue reading

The Algo Bank Concept

We are currently witnessing an internet-based transformation of many major institutions, which would have seemed like science fiction not so long ago (and still might to many currently living). The future of banking is one such area- a transformation from retail bank buildings to a global computer system that makes decisions about how to move money by the use of algorithms rather than humans. A bank that requires almost no people or real estate to function. No more than a headquarters, with some managers and some developers, who may be working remotely, will be sufficient. Although purely remote employees and a purely virtual service is entirely plausible.

The customer of this algorithm bank will rely exclusively on the web interface of the bank for all interactions. For most users of banking services this is pretty much already the case anyway. Even today the beginnings of the future are starting to appear before us.

Continue reading

The Machine Philosopher King

You know, some days I feel how I imagine Cassandra of ancient Greek mythology must have felt. Cassandra was the victim of the Greek gods’ devious ingenuity, to be cursed to utter true prophecy, and yet never to be believed by those who heard her prophecies.

The last few years have been, simply put, tremendously fucked up on so many levels. Recently resulting in widespread rioting, an almost refreshingly mundane public order problem compared to the unprecedented and exotically diverse species of ratfuckery we’ve been seeing for years.

What I want to get to as a topic, however, is that social change is never straightforward; never a direct line from A to B. Democracy may be showing an uncharacteristic weakness, but I have not yet resigned myself to Plato’s prediction about the inevitable fate of democracy being correct in the case of the United States. Americans, at least informed Americans, know more about political theory than they did in Plato’s day and hopefully we may yet prove Plato wrong. I hold out hope that we will.

But a more enduring solution to the problem of governance is nonetheless desirable. In the words of Winston Churchill, “Democracy is the worst form of government, except for all the others that have been tried.” And on this point I still believe that Plato had an insight that has been long forgotten which we must revisit; the notion of the wise philosopher king as an executive without self-interest. Now, I will absolutely agree that among humankind this is an outrageous request. There is practically no individual person we could confirm has the characteristics we would require in order to be an effective philosopher king. People are corruptible. People are stupid. Almost invariably investing a fallible human with so much executive power ends in disaster. So how do we solve this problem?

I offer the following solution; machine administration. Computers are, in a very practical sense, analogous to Plato’s ideal of a philosopher king completely devoid of self-interest. Impartial. Where Plato wanted to cultivate young men to be wise and selfless civil servants, I think we have since learned this is perhaps a hopelessly naive notion because power corrupts, and absolute power corrupts absolutely. A philosopher king who is a human being is not a good idea, no matter how well-intentioned everyone involved may be at first. Eventually a ruler with totalitarian powers will become a catastrophe.

To clarify I am absolutely not proposing the notion of an artificially-intelligent ruler. Although amusing to consider, we have neither the technological capability to create such an AI, nor the desire to entrust such expansive executive power to one. But what we CAN do is create a legion of rudimentary, functionary civil servants that is as unimpeachable as it is incorruptible.

As it were, a machine bureaucracy rather than a machine sovereign. Each individual machine in this mechanical civil service would actually be very simple. But collectively, they would result in an unprecedented level of efficiency, speed, transparency, and public availability of information, than has ever occurred in government in history.

Consider that the vast majority of administrative actions are routine. When you go to the Department of Motor Vehicles to file paperwork- a computer could do that job instead of a clerk. Title offices for the purchase of real property? Why have humans and file cabinets for that? When we calculate tax liability, or do any number of other numerical, functional, or recordkeeping tasks, a computer could do that job too. In many cases even the implementation of policy is also routine and suitable to code-based computer execution.

In fact for many forms of paperwork the mere fact that a document was filed on or before a particular date is, by design, intended to be sufficient. A submission of such a paperwork document to a simple civil machine would be trivial to implement. Essentially this civil machine would only need to create a meta-record that a certain type of document was filed at a certain time, perhaps with some other meta-data about the transaction. For example if you are selling a car, creating a record about that transaction would likely require meta-data about the names/identities of the parties involved and the unique ID (VIN number) of the car, for the purpose of being usefully searchable later.

I contend that this machine civil service, or machine bureaucracy, would be immeasurably faster and more efficient, but that is actually not the main objective. The main objective of this entire project is to create a system that is truly impartial, truly incorruptible, which delegates power as much as possible to the smallest and lowest possible level of authority.

On Accountability

Necessarily any government function creates an accountability problem. What if these civil machines are designed intentionally for some nefarious purpose? However computers also make available a unique and effective solution for accountability; by having the code that these functionaries execute be open-source. Any citizen should be able to inspect their code at will to their satisfaction, so they can be confident there will be no skullduggery.

It is imperative that these “civil machines” be entirely open-source; failure to do so invariably creates a lack of confidence, such as the proprietary voting machines deployed in many places in the US. A black-box computer can never be proved to be trustworthy from the perspective of the general public. Keeping with the same example, an open-source voting machine eliminates the principal concern about using machines to do important work; that the machine is designed and programmed to be corrupt on purpose by its creators.

In addition to being open-source, logs or meta-records will also be vitally important. Perhaps a better name for these will be coined subsequently. But civil machines should routinely log their actions. Smart implementations of this should probably have varying levels of verbosity. If you really wanted to, you should be able to inspect a public record of every output of every civil machine’s operation in detail. In conjunction with the ability to read the code itself, a complete log of all a particular machine’s actions and “decisions” can be used for an unprecedented level of transparency and accountability never before envisioned by civil servants and bureaucracy in general.

Creating a record for every single one of a civil machine’s decisions and actions is an example of extremely verbose reporting that would be totally impractical for a human functionary or clerk.

Democratic Machine Bureaucracy

In a democracy the ultimate sovereign is the people. And, where practical, it is preferable to place administrative and political control with the people, rather than with centralized political office. As a matter of pragmatism it is not possible to capably govern every aspect of a large state by popular vote. So we have elected officials charged with the exercise of official duties as public servants.

But the most important criteria here is judgment rather than execution. We need humans in the loop when a decision is being made, rather than execution. The question being solved is who decides rather than the also-important topic of who executes. In other words, it is unwise and impractical to place expert and high-detail decision-making in the hands of an uninformed general public. And, as a matter of practicality, it is advantageous to select a trustworthy public servant and invest the time and effort into educating that person on the information and knowledge they require to make an effective decision on some topic, and the public will abide by their decision that results. So far, this is actually tightly analogous to the idealized proposal of a philosopher king by Plato.

Where we run into trouble is that the power of execution necessarily entails the power of control. And, such control can then be turned back on itself as a matter of political influence. Imagine Augustus Caesar being appointed dictator by the Senate, and then five minutes later proposes a motion in the Senate with the Legion standing next to him, bound to obey his every command. The power of implementation/execution he was charged with immediately converted into a political implement to coerce and incentivize.

In modern society this usually plays out in reverse; a corporation with some legislative or regulatory objective supports a political candidate with the intention of achieving some purpose once that person gains office. But the principle is the same; taking advantage of the consolidation of political power into an office to achieve an objective that may be contrary to the ideal outcome the populace might have preferred if they were informed and charged to make the decision directly. As a practical matter doing this on every topic is impossible, but that fact nonetheless does not make corruption desirable.

I do not mean to demean public servants or politicians, indeed many of them are dutiful and effective. But I am sure they are more familiar with the destructive incentives at play in their professions than the general public could ever be.

Returning again to the solution- a machine bureaucracy could one day result in an incorruptible implementor. A machine public servant will do its job as programmed without even the possibility of corruption.

This does not mean there will never be corruption or that there will never be lobbying. There are still two points of vulnerability; the human politicians/controllers who decide how to assign these civil servants’ duties, design, and objectives are still a point of vulnerability. And, this also creates the possibility that the engineers who actually create these programs could potentially do so nefariously. But, as stated earlier, making the code open source should largely eliminate the actual risk of the engineering type of manipulation as we could expect they would be caught by people who are paying attention. And short of having an impossibly advanced benevolent AI at the apex of the tree, I do not think it is logically possible to completely eliminate the possibility of bad human decision-making in terms of controlling what the goals of this system should be.

Direct democracy to assign objectives and select methods of implementation is technologically feasible but I think it would be a terrible, terrible idea. Imagine you’re given a ballot with competing snippets of code on it that will control how one of these machines behaves. The general public will not make effective decisions on this subject. Therefore selecting one or more suitable public servants who will make these decisions effectively is the way to go, even though it unavoidably creates the risk of improper influence. I think the fact that the implementation is delegated to a faithful machine will curtail the severity of this risk dramatically.

As an example, suppose we’re discussing the Food and Drug Administration, or suppose further that there is a law that requires a food manufacturer to maintain records concerning the manufacture of their cans of food, including among other data, the date of canning, the sources of any meat ingredients, etc. Maybe the policy goal of this rule is to help identify the point of origin of foodborne illness. The decision that this needs to be implemented must be made by humans. However, humans need not necessarily execute it, and indeed this would be highly laborious for humans to do manually. But at the moment that a can is stamped with the date, installation of an internet-connected computer within that machine could easily coincidently also create a record that a certain identified can was stamped on a certain date, as well as adding various other data required about that can.

This does actually raise one quite interesting question about who is the author of this type of regulatory software. Seeing as it will likely need to be installed in various machines not directly controlled by a regulator, this is a somewhat complex question. In my opinion regulatory software is most sensibly written by the body that is charged with regulating its particular subject matter. For example the FDA is the entity best equipped to interpret its own regulations and orders, and it makes the most sense for them to write such regulatory software only once authoritatively. Rather than have various companies implement various separate times, differently and also perhaps poorly as it is in their interest to do so ineffectively in a self-serving manner. Such regulations would likely also need to be expanded to include the proper implementation of the appropriate regulatory software, including what types of machines require it and how it shall be used. It’s a highly complex question but it has tremendous potential.

Essentially, my point is that Plato’s notion of a wise, capable, and selfless philosopher king seems fittingly applied to machines which tirelessly and faithfully execute their programmed instructions. And in these turbulent times we are forced to consider that the centralized forms of power that we are familiar with, are actually failing in the way they have repeatedly failed across the great span of history. And I for one think it is time that we think ahead to how we might create the next generation of government, the next generation of political revolution that will define the next several hundred years, much as classical revolutionary democracy reinvented the world for the better, for 300 years.

The Concept of a Universal Machine Interface

The next leap forward for the world of machines is going to be a huge proliferation of an endless diversity of computer-equipped devices of every stripe. They will range tremendously in purpose and functionality from a smart thermostat, to a self-driving car, to a virtual voice assistant. And as a key part of this new Internet of Things and intelligent devices, we need a new architecture for these devices to communicate with one another.

A longstanding paradigm of computer science, particularly in the web space with the global scale of online services, has been the concept of an API, or application programming interface. The purpose of an API is to make available data and functions from one service, to another different service.

The point I would like to address is that this API paradigm is not going to be sufficient to deal with the proliferation of smart devices and AI’s that is going to be occurring in the near future. API engineering requires humans to design the public-facing functions that a service makes available, and humans to make use of the manually-created API to be used by a different service. This works great for a relatively small number of services being connected together. But the number of links increases exponentially with the number of different types of agents. Connecting IFTT with Google is one thing- connecting ten thousand different types of devices in every possible cross-link configuration, is a different kettle of fish entirely.

My solution to this problem is to have a single uniform message interface, a “universal machine interface” if you will. Or UMI to coin yet another initialism.

This uniform message interface needs to enable any device (connected to the internet obviously) to post any message with a generic blob of data of any description or contents. And all other devices must all be able to view all the UMI messages. The idea here is that each device can listen only to messages that are of interest to its purpose. Rather than a custom-made API for interfacing two specific services, we have a “broadcast” system where a message is intentionally made public for “listening” devices to scan and decide if they are going to do anything based upon that message.

Naturally, with billions of devices this quantity of messages is going to be very voluminous and sorting them into streams or categories would be a good idea. Metadata such as a device ID for the source, a unique message ID, the timestamp for when this message was sent, and possibly other metadata such as a location would be useful as well. Message replies by having one message refer to another message or to a collection identifier would be useful. And many listening devices are not going to care about old messages, or about geographically remote messages, so this metadata allows for filtering lots of messages. Variables are represented within these messages, allowing arbitrary data to be labeled and passed between different devices, possibly made by entirely different manufacturers, with no engineered API specifically between them.

Every device implements its own internal logic, as well as reading from the public messages in whatever way makes sense for that device. And, posting messages publicly as well.

It is also important to point out that this approach is almost certain to be unsuitable for highly sensitive data, as publicly posting that data would not be desirable. Privacy is a vital issue that I do not want to understate, but at the same time, not all data is sensitive and in many use cases it is more useful to make information widely available and permanent to accomplish its purpose. So don’t do this for a medical or defense application. But for tracking a package or reserving a parking place or most other commercial or personal applications it is better to use a public system.

Let’s reduce this to a practical approach. A really simple case could be a question-answer situation. One device wants a piece of information. It asks a question, publicly. Another device that has that information could, in response to scanning that question message, send another message with the answer. This is starting to get into the weeds of a possible implementation about how this UMI system might function, but it seems likely we are going to need archetypes of messages including propositions (a simple statement of information), interrogatives (a question), imperatives (a command), and others. The proper response to an interrogative would be a proposition. “[ID][Interrogative] [Service] when is my package [package-id] arriving?” A listening device that is programmed to respond to that message replies with a “[ID][Reply][Proposition] Package [package-id] scheduled arrival 3 days from now.” This is not how a computer would represent this data of course- perhaps a dictionary-type data blob with key:value pairs would be best for each message transmission. But this approach could allow an uncountable number of different devices with different manufacturers to cooperate together usefully. Each device only needs to care about reading from and writing to the UMI.

AI agents and machine agents using a UMI type system do not need to care about the internal workings of other agents. This is vital. In this respect, the UMI system conceptually resembles the principles of object-oriented programming and encapsulation, but there is one enormous difference in the existence of a social relationship between agents that is never a factor for classes in a program.

What do I mean by this? A self-driving car pulling up to a gas pump and purchasing gasoline via a UMI system is functionally parallel to OOP- however two objects within the same program have 100% perfect trust between them by definition. Two separate economic agents or social agents do not. The car has to be concerned about the possibility of payment and not receiving the gasoline, and the pump has to be concerned about the possibility of delivering gasoline and not receiving payment. This agentive separation requires a new approach with UMI that is different from traditional object-oriented programs.

“Intentions” are a vital tool for this UMI system. Essentially this is a message flagged as an intention, like a proposition or interrogative, except it represents a future desired state rather than a current state. One way this might be utilized is to have two or more machines exchange a series of intention messages before engaging in a transaction. A self-driving car buying gasoline transmits its intention to buy gasoline explicitly, the gas pump replies, most likely with its intention to deliver gasoline in exchange for payment, and the car replies with an intention to pay.

It is worth repeatedly reiterating that machines are stupid. Humans have developed countless subtle social signals and cues, as well as patterns and traditions that make “simple” a sequence of events that is actually very complicated. Consider the complexity of a checkout line at a grocery store. There is a queue, a line of people waiting for their turn. Queues have their own social rules that are silently agreed upon. The cashier understands that an item placed on the counter or conveyor is an expression of an intent to purchase without words being exchanged. The scanning of items, tallying of an amount to be paid, an implicit and possibly silent request for payment, the execution of payment, this is a highly socially complex interaction that takes place countless times each day that we humans take for granted. Machines must be programmed to execute every step of this type of process explicitly. That is not an easy task to even describe and represent, much less execute in a bug-free form. The real world is messy and complicated and has countless weird permutations, edge cases, and bizarre situations, which a machine may be incapable of handling because it was never programmed to do so.

The only real approach available to us to deal with this problem is to limit the types of interactions that are allowed, to simplify and apply strict protocols until it becomes manageable. Like a vending machine- a primitive mechanical solution to this exact problem. The vending machine reduces the transaction to as simple and rigid a form as possible- the user inputs currency and presses a button to indicate their purchase choice.

However a vending machine is a simple machine. Although some reduction of the scope of the interaction is required, hyper-reduction alone is not going to solve the problem for our needs today. Virtual AI assistants ordering movie tickets, restaurant reservations, or autonomous machines buying and selling commodities and services, whether that is a self-driving taxi or a mailbox. These devices must possess far more complex behavior than a vending machine in order to do their jobs.

A virtual AI assistant in a customer’s phone wants to order tickets, and calls a business. A virtual AI assistant picks up and these two AI agents need to have a conversation. How do we accomplish this? And in fact two disembodied intelligences communicating over the internet is actually a relatively easy problem compared to embodied intelligences such as a self-driving taxi taking a human or a package as a fare.

We are most likely also going to need a new concept for a “job” or task request generally. This is analogous to a question, but rather than a request for information, it is a request for an action. UMI machine “jobs” would be a specific action, a completely different definition from a human job which is an enduring affair. A taxi fare, for example, would be at least one ‘job.’ Most likely a complex job like a taxi service is going to require division into many smaller jobs, possibly as small as unlocking and opening a car door being different jobs. A request that the self-driving taxi unlock its door is a perfect example of a superficially simple action that is nonetheless nontrivial to actually implement an intelligent machine to perform that action as reliably as a human being can make that decision with little effort.

I hope this has been some food for thought. By no means is this a solved problem. But in my opinion the beginnings of a solution are in having a universal machine interface, which enables public messaging between devices of different make and manufacture. This “agentive” universal message transmission system needs to be considerably more complex and nuanced than traditional object-oriented approaches, because different agents cannot assume function or cooperation the way different objects within a single program can. Among other ideas to be developed, this could be helped by having new types of messaging between smart devices, such as public expressions of “intentions” and other “squishy” data for facilitating effective interactions between disparate machine agents.

Centralized Services vs Decentralized Autonomy

Since the early days of the internet there has always been an engineering question about server/client side processing. However in contemporary times this is far deeper than an engineering question; it is a fundamental issue of *autonomy *and *ownership *of data and control of online identity and action. The meaning of this distinction has expanded from an engineering implementation question, to one of enormous consequence in society at large. Who has the power- the individual, or the service provider?

Continue reading

The Next Generation of Copyright

The former landmark legislation in copyright law was the Digital Millennium Copyright Act which became effective in 1998. And as important as the DMCA has been for the development of the internet, the wheels are in motion for the passage of a new generation of copyright law.

What this means is that the time to have a conversation about what the future of American copyright law should look like is right now. There are powerful forces who want a more powerful regime of controlling information on the internet, such as creating a “notice and staydown” regime to replace the DMCA’s “notice and takedown” provisions. But in a world with internet, it is time to start thinking with a different set of tools than the old copyright adages which led to the development of the powerful industries of today.

Change is afoot, and it is vital that we adapt our legislation to take full advantage, rather than merely to safeguard old industries who may be displaced by that change.

Continue reading