Will a PC of the future integrate also a compass?

Of course, I am limiting this discussion to PCs and other Internet nodes on the face of the Earth. Building a spaceborne network has its own special considrations, as well as a network of nodes deep inside the Earth.
An inexpensive replacement to the current networks of cables, cellular operations and telephone cables is mesh networks. In those networks, a PC communicates with its nearest neighbors, and they route packets to each other in a way reminiscient of the old UUCP protocol.

There is the problem of discovery of the topology of a mesh network, especially given its dynamic nature.

My suggestion: equip each node (a PC or other) with a compass or its equivalent (such as a GPS receiver) and a way to find the directions of its neighbors relative to it.

Nodes will select their IPv6 addresses from a block of addresses, and the addresses will depend upon their latitude and longitude. Thus, from the IPv6 address of a target node, the source node will figure out how to route data packets it wants to send to the target node.

Voila, no large corporations, no expensive infrastructures will be necessary (besides the GPS satellite network, if a GPS receiver is used).

2×2 Matrices with smarts on one dimension

Tom Peters’ discussion of the smart complexifier can be summarized in the following matrix (see also the full article in Tom Peters’ blog).

  Simplifier Complexifier
Dumb Might actually be of help Can be ignored without harm
Smart Analyst from heaven Analyst from hell

This reminds me of the following classical matrix from the IDF, classifying army commanders:

  Lazy Industrious
Dumb Harmless Most damaging
Smart Creative Best kind

More bad predictions about the future

Top 87 Bad Predictions about the Future lists several predictions, which proved wrong.
Yitzhak Rabin made another bad prediction in his autobiography – that independent satellite launch capability would not be feasible for Israel, and that its military value would not justify its cost. At 1988, Israel launched the Offeq 1 satellite using its own launch vehicle.
The next bad prediction, made by unknown opinion leaders, is that smaller countries, like Israel, would not develop their own independent manned space launch capabilities. Also, that only big countries would invest in building their own space stations and space colonies.  The jury is still out about this prediction.

Musings About Definition of Wealth and its Practical Consequences

The mercantilistic definition of wealth is that the more gold bullions (or equivalent) you have, you are wealthier. The modern consumerist definition of wealth by possessions is similar.

Buckminister Fuller and Robert Kiyosaki define wealth in terms of the time you can survive without having to work.

A country is wealthier if it has better infrastructure (more capital invested in it), its workforce is more productive, its resources are efficiently allocated (by market forces and where they fail, by well-thought out regulations), and its leaders have the know-how to lead it.

The question about definition of wealth has practical consequences for young people, who have to decide about the moneymaking aspect of their future.  The mercantilistic definition leads to legal and otherwise means of acquiring wealth, lacking considration of other people and of the environment.  Viewing wealth merely as survival time ignores risks which could wipe out part or all wealth, encouraging people to take big economic risks, which eventually ruin several of them.

Once someone has enough wealth to sustain him indefinitely, the useful definition of wealth for him changes from one of accumulation into one of reducing as much as possible the likelihood of losing it due to misfortune or natural disasters.

Thus, once someone has enough wealth to sustain him indefinitely, he had better start working on converting his wealth into environmentally sustainable one.  He should also put some of his wealth towards insuring the rest of it – by taking out insurance, by acquiring an home in another country and investing there, by diversifying his investments – according to their risk profiles – even when this causes reduction of return on his investments.

In his personal life, he can start training in survival skills.

Similarly, a developed (wealthy) country can start protecting its residents against natural disasters.  Its residents can start training in whatever skills required for quick recovery from disasters.  Infrastructures can be upgraded to prepare better for natural disasters, including whatever is required for speedy and relatively painless recovery in the aftermath of such disasters.  Infrastructures, which are vulnerable to natural disasters (such as dams), can gradually be decommissioned.

This is an answer to the question what should someone, who already has all the wealth he needs in the world, do with his “excess” wealth.  It also answers questions about the future economic path a developed country should take to keep its residents gainfully employed.

How to house 100 billion humans on Earth without destroying surface ecology?

October 15th, 2007 was proclaimed as Blog Action Day, with the environment as this year’s topic.

In previous blog entries (Question which I asked myself en route to Olamot 2006 and Housing 100 billion humans on Earth – another take), I considered the problem of housing 100 billion (1011) humans on Earth without ruining its ecology or making it uninhabitable for plants and animals. Now I would like to consider whether it would be feasible to house this number of humans deep in Earth, leaving most of its surface free of humans, for animals and plants to freely roam.

The total surface area of the Earth is 510 million km2, of which about 150 million are land. Let’s assume that we’ll use only 200 million km2, of which 150 million km2 are below land, and 50 million km2 – below water.

We’ll also assume that the average volume needed per capita, including recreation, food producing farms, and factories, is area of 1km2 times height of 5 meters. Thus, to house 100 billion humans over an area of 200 million km2, we’ll need 500 layers.

Since the plan involves digging of giant caves inside the Earth, each layer height will have to consist of 5 meters of inhabitable space plus unknown height of supporting structure, which we’ll assume to be 15 meters. Thus, the total height of 500 layers would be 10km.

Assuming that the top layer will be at small depth from the surface, the bottom layer will be at depth of about 10km. The geothermal gradient of the Earth’s crust is approximately 20 Kelvins (20°K) per 1km depth. So, the temperature at bottom of the living space will be about 230°C (about 500°K). Therefore, a mechanism for cooling the caves will be needed. This mechanism will, however, provide the humans with geothermal energy, estimated to be 63mW/m2. Over an area of 200 million km2, total geothermal energy will be 12.6×1012W, or 126W per capita.

Of course, the problem of constructing and maintaining structures able to withstand the pressures at depth of 10km as well as survive the movements of the Earth’s crust’s tectonic plates, needs to be solved.

When is it bad idea to have modularity in software?

Modularity is the most successful software engineering practice ever. Unlike other practices, it is practically never abused.
One day I was asked when is it bad idea to modularize software. Of course, for every good thing there are always pathological or contrived circumstances, in which it turns out to be a bad idea. Software modularity is no exception to this.

Algorithms

To be able to present and understand complicated algorithms, they need to be modularized. Then, when wishing to optimize such an algorithm, one typically confines himself to local optimizations, rather than to global optimizations.
When global optimizations are needed, the algorithm developer has to forsake modularity, and the resulting algorithm becomes very big and difficult to comprehend.

Source code level

Due to the way the human brain works, modularity is always good in source code level. However, it needs language support, such as support for macros and in-line functions to allow compilation into efficient machine code.
On the other hand, one can expect the software development environment to have source code pre-processing tools, which work around any language support deficiencies. Nowadays, it is not a big deal, unless one works for a mentally retarded software development operation.

Machine code level

In machine code level, software modularity means usage of DLLs, inter-module interfaces, plug-ins, etc.
This kind of modularity can be bad, if a module interface overhead directly affects a system bottleneck. A system bottleneck could be CPU time, memory consumption, I/O, database accesses, network latency/throughput, etc.
A good system design implements machine language level modularity when the overhead is not critical to performance; and optimizes the interfaces away where system bottlenecks occur.

Blogs vs. Newspapers

One important difference among blogs and newspapers (paper or Web sites) is the fact that no one expects bloggers to verify their sources, or to be objective (unless the blog claims otherwise). On the other hand, newspapers are supposed to be authoritative. This means that newspaper journalists should be verify their sources, get a response from people being covered in news items, etc.

Five Unpublicized Anecdotes (in Hebrew) has accounts of five instances, in which journalists and/or newspapers violated ethics or professionalism. The anecdotes can be summarized as follows:

  1. One journalist steals a news item from a colleague, without giving due credit.
  2. A journalist publicized embarrassing personal information about a politician among the politician’s network of friends, rather than publicize it. The information in question was the politician’s very explicit cellphone talk with his mistress.
  3. An embargo agreement between a police investigator and a journalist, not to publicize anything about a certain sensitive investigation before it ends, was not honored by the journalist’s newspaper due to changes in personnel.
  4. A journalist was careful and refused to publicize unconfirmed rumor, and was eventually fired as a result of this refusal.
  5. Another journalist publicized a fabricated news item, which had no basis in fact.

Won’t it be great if bloggers could volunteer to monitor the news items publicized by newspapers, and keep the newspapers and their journalists honest?

Bloggers could catch textual duplications between different newspapers (anecdote 1), and call out newspapers for publicizing false information (anecdotes 4,5).

At present, the only mechanism for keeping newspapers honest is the threat of libel lawsuits. This does not work for keeping out fabricated news items, which damage no one’s reputation. False but non-defamatory news items about people do not lead to libel lawsuits either. People also sometimes let libelous information pass by, knowing that their personal acquaintances know better.

How to implement such a newspapers’ monitoring network?

One approach would be to observe the mechanisms being developed by the Wikipedia for ensuring the correctness of the information in its articles, as well as academic research about trust and reputation networks. Then try to adapt them to set up a network of newspaper monitoring bloggers.

A Proven Free Software Business Model

Companies like MySQL, RedHat and Zend (trademarks belong to their owners) make a lot of money from Free Software. This indicates that they have a Free Software business model, which really works. This is interesting, because when people discuss Free Software business models, usually there is a lot of handwaving. There are assertions, which are left unsubstantiated. However, the above companies found a business model, which really works. This business model goes as follows.

  1. If you are hobbyist and make no money from our software, then our software is free for you.
  2. If you make little money from our software, then our software is free for you, too.
  3. If you make a lot of money from our software, then you pay for using our software.

The above model works, when it works, due to the following reasoning.

  1. If you do not make money from our software, then you do not have the money to pay us anyway. If we demand money from you, you just stop using our software and switch to another hobby, in which our software is not needed. We prefer that you use our software, even if we get no money from you, due to the same reason Microsoft tolerated software piracy as a means for conquering a market for their software. We want you to find more uses for our software. We want you to debug it. We want you to contribute improvements to our software. On the other hand, you cannot make more money by having our software optimized for your environment, so you do not need support from us.
  2. If you make little money from using our software, then we would like to have a cut from your profits, as well. However, we cannot justify the costs involved in collecting from you. For this, we need to sign contracts, install licensing infrastructure, enforce licenses, incur badwill, and even support you if our licensing mechanism causes you problems. Therefore we would not collect money from you. However, we win from your using our software due to the same reasons as we would win from people who make no profit from using our software. There is also the chance that one day you will become a big business; or even come to make our software a critical part of your business infrastructure. Then the following applies.
  3. If you make a lot of money from using our software, then you have an interest in having the software work all the time. You want any bugs to be fixed promptly. You want support in optimizing the software. You can afford to pay us a lot of money, because the software makes and saves you much more money when it works and when it works with you in a smooth way. Therefore you would sign a support contract with us. Since big money is on stake, we can afford the transaction costs involved with collecting the money. If your optimizations and customizations are your trade secret, we license our software to you using a proprietary license.

A consequence from the above thinking is that not every software package can take advantage of this business model. For this, the software package must have the following attributes:

  • Be useful for both private individuals, small businesses and big businesses.
  • Be “tinkerable” i.e. facilitate development of enhancements and add-ons by individuals with bright ideas.
  • Be such that optimizations and adaptations to meet special needs would yield significant profits or savings in the right place.
  • Be critical to the functioning of some of the big businesses, which use it.

Typically, such software is dual-licensed, usually under the GPL and a proprietary license.

Nude Promotion of Peace

It is now fashionable to promote various worthy causes, like environmental preservation, by posing in the nude. Plans to make a nude photo of both sides in a conflict are under way for the fans of two Scottish football teams, who rioted at 1980 in an Old Firm Game at Hampden*.

So this is the right time to air the outlandish, unrealizable and crazy idea of taking a photo of a group of nude Israelis and Palestinians** – both men and women.

* Background information about the Rangers vs. Celtic conflict:

** Yes, I know about the Arab (including Palestinian) tendency to kill women, who violate “family honor” by “inappropriate sexual behavior”.

Ethical implication of advancing medical know-how

In the past, there was a limit to the expenses, which could be incurred by medical treatment of people needing medical attention. Usually the requisite know-how ran out before money. In other words, people died when their physicians no longer knew what to do.

Nowadays, there are more and more cases, in which the constraint is monetary rather than know-how. In other words, there are more and more cases, in which patients die not because physicians do not know how to treat them, but because money is not available to pay for known treatments.

Another factor, which did not exist in the past, is the ability of technology to keep the bodies of brain-dead people alive, by means of intravenous feeding and heart-lung machines. Such a treatment, of course, costs a lot of money, and could last for several years.

This change leads to an ethical dilemma, which did not exist in the past.

In the past, families could commit to treating a sick family member at any expense, and have reasonable expectation that he’ll either get well or die before the entire family is driven into abject poverty.

Nowadays, families are more and more confronted with the dilemma when to stop financing treatment of a sick family member. The sick family member could be elderly, needing care due to an age-related malaise. Or he could be a young child with congenital deformity or childhood cancer.

Another aspect of the dilemma is how to allocate financial means among family members, usually elderly, who need to be taken care of – and other family members, usually young, who need money for tuition, downpayment on dwelling place, and other expenses which will help get them ahead in their lives.