Wednesday, August 11, 2010

Are We Loosing Net Neutrality?

The internet is successful because the internet protocol is a powerful medium. Service providers can imagine many ways of splitting up the medium to make more money, however the corporate conception is necessarily short sighted.

On the long term, corporations evolve in fundamental ways. They can open, merge, split, be acquired, and close. This is appropriate to individual corporations including capital market service providers, but a headache for the consumers of infrastructure providers.

For profit internet service seems to work well enough on the short term. However, in the past decade we have seen that most internet service consumers have no access to the multicast protocols. And of course there's the famous case of Comcast versus BitTorrent.

Perhaps corporations are not capable of being responsible for basic infrastructure over the long term, due to the need for continuous growth in the economic rent paid on public equity capital.

In other words, if for profit internet service providers can't do the business they entered into then other forms of internet service infrastructure will be needed. The public postal service is not the only alternative.

Wireless mesh networks have been developed by municipal governments, and individuals who install a mesh node somewhere.

If every house had a mesh node, then internet would route normally between houses and collective entities like cities and municipalities could connect the mesh to the conventional internet with a large, shared pipe.

This has been done in a number of places including California and Massachusetts.

Saturday, August 7, 2010

What is Software Engineering?

Most essentially, it is the art of realizing the significance of simplicity to reasoning about the organization of the machine.

In the production of software we organize the machine for its operation. The most important tools and methods we employ are for reasoning about this process -- to comprehend it.

The ideal organization of the machine in a purely mechanical (performance) perspective is typically very different from the human logical one, as we use the programming language to reason about the organization of a program as a set of desired properties and characteristics.

In the practice of Software Engineering we deal with this central issue in the compromises between the ideal and desired organizations of the code written in the programming language.

With experience it becomes clear that simpler forms tend to narrow the difference between the ideal machine and the desired machine.

When the code is simpler, two possibilities emerge. First, the code is easier to reason about and therefore fewer devices are employed for the sake of comprehension. And second, code design can be more mechanical as a single state machine or stateless function.