Thank you, Taldor LTD., for tarnishing the reputation of computerized elections in Israel

Yesterday, the primaries election of the Labor party in Israel was aborted and postponed to a later date due to serious malfunctioning of the voting machines deployed for this purpose.

The provider of those machines was Taldor LTD.

Sources (in Hebrew):

I wrote previously about computerized elections.

Resolution of Yair Lapid’s “The Real Crisis” of nonprofits in Israel

In the 28.11.2008 issue of “7 Days”, the Saturday supplement of Yediot Aharonot, Yair Lapid wrote about “The Real Crisis”.  It is about the financial crisis facing several nonprofits, which live on donations from well to do people, and which perform various services in behalf of people at need. Eventually, this financial crisis could adversely affect several vulnerable people.

The crisis is due to the drying up of the donations due to the financial/economic crisis happening now. Yair Lapid’s conclusion is that the Government should provide for those services rather than relying upon nonprofits.

I would like to offer another solution to the problem.

At times of economic depression, traditional economic doctrine calls upon governments to pump money into the economy.  Usually this is done by make work projects, infrastructure investments, etc.

I suggest that in addition to the above measures, the Government hand out stimulus money also to the above nonprofits, in proportion to the amount they got from donations in previous years.  Only nonprofits, which meet the criteria for proper management practices, would qualify for this.

My reasoning is that such monetary infusion will help keep employed people with special skills, so eloquently listed by Yair Lapid.  Also, since it can be assumed that people vet on nonprofits before making donations, the Government money will be almost well-spent as the monies of the private donors during previous years.

How to get capitalism to regulate itself?

In This is not the end of capitalism, Mark Shuttleworth (of Ubuntu fame) points out the need for capitalism with regulation. The regulators – those people who would regulate businesses – would need to have extraordinary personal qualities of resourcefulness, wisdom and incorruptibility. In other words, they need to have caliber like E.E. “Doc” Smith’s Lensmen (the qualities required by Lensmen include intelligence, utter incorruptibility, a high drive to succeed, and the highest drive to fight evil).

However, like Santa Claus, such people exist only in fiction. Therefore another solution is needed. A practical solution would, by necessity, be based upon a system, in which imperfect and corruptible people would nevertheless do almost as good job as incorruptible ones.

Fortunately, there is a precedent for systems obviating the need for supermen. The 18th century political philosophers faced a similar problem. They were faced with the problem of designing a regime, in which people will enjoy freedom, even though they are governed by other imperfect people. The solution was to devise a system of checks and balances. It was embodied in the constitution of USA and worked well for several years.

Therefore, a possible solution to the problem of regulating capitalism is likely to come from a system of checks and balances. In the following I’ll try to sketch a possible design for such a system.

A business operating in an industry, which needs to be regulated, has to answer to the following stakeholders:

  • Shareholders
  • Employees
  • Business partners (customers and suppliers)
  • Environment

Regulation, when it is enforced, aims at restoration of balance of the interests of all those stakeholders. Regulation has to be enacted when money fails to work as a means to motivate the business to serve its stakeholders in a balanced way.

Let’s try to set up a feedback loop, in which bad regulation translates into loss of profits. This can be accomplished by nominating people, who act like the historical kings or modern Benevolent Dictators For Life (BDFLs). Each BDFL will be responsible for regulating all businesses in a particular geographical area. Every business in the region will pay the BDFL 1% of its profits. On the other hand, the BDFL will be subjected to lawsuits from any stakeholder, who believes to have been wronged by a business under the BDFL’s responsibility.

Thus, the BDFL will have an interest at ensuring that the businesses in his area will prosper in a balanced way. Since small businesses have larger growth potential than big businesses, the BDFL will tend to favor small businesses. The BDFL will balance the interests of businesses with those of the other stakeholders when formulating regulations, so that the business will thrive and the BDFL won’t lose too much money to lawsuits.

This proposal is incomplete, and leaves out answers to several questions such as:

  1. What happens if a business operating in a geographical area gets to be so large that the BDFL of that area will profit more from favoring it than from nurturing other businesses?
  2. Is the BDFL only to regulate businesses, or also develop infrastructure (like kings)?
  3. How to select BDFLs from among candidates?
  4. When and how to replace BDFLs, who do not do good work?
  5. How to preserve the sovereignity of the people in a BDFL-controlled area?

Not bothering to vote means voting for the candidate you hate the most

Yesterday, USA elected the next President. Obama won the elections by clear cut margin. There was higher than usual turnout of voters.

Next Tuesday, on Nov. 11th, there will be municipal elections in Israel. In some cities, in particular Jerusalem, the elections will have critical importance.

I’d like to urge everyone eligible to vote – to vote in those elections.

Remember, if you do not bother to vote, you in effect are voting for the candidate you hate the most!

What is the most important thing in administering a Linux (or any other) system?

Ken Hess listed 5 Things Every Good Linux Administrator Knows and left out the most important thing. It is more important than uptime. It is more important than controlling the network services. It is more important than making users happy. It is more important than documentation.

REGULAR BACKUPS!

UPDATE (2008 Nov 07):
A day after I wrote the above, Ken Hess added 3 More Things Every Good Linux Adminstrator Knows, the first of which is regular backups.

Elusive PC Keys

I have fulfilled my exercise walking quota today – by walking from computer shops to locksmith’s shops to electricity supply shops.

The objective of my search?

PC Keys

Those keys are used for locking PCs against turning them on by accident, and they also lock disk trays in bays which allow disks to be swapped.

My PC has two such trays, and yesterday I broke the last good key, as I was swapping disks a lot, in an attempt to make a new disk bootable.  So I need few new keys, and more important – a supplier to whom I can turn in the future if I need even more keys.  Locksmith shops are one natural place for finding such keys, but two locksmith shops, which I visited had no such a thing.  PC repair shops should have a stock of those keys as well, but the places, which I visited, had none.

If I don’t find a supplier for those keys, I may have to resort to opening the computer case – not once but several times. 🙁

Copyfree vs. Copyright/Copyleft

The other day I stumbled upon the Website http://copyfree.org/, which advocates a software licensing model somewhat similar to LGPL.
See the Website for arguments in favor of this licensing model.

I would, however, stick with GPL/LGPL due to the following reasons:

  1. The world has some actors (such as the one whose name starts with M and ends with T) with monopolistic intentions. Copyfree is not strong enough to stop them. GPL (especially its v3) is essential to limit the effects of such actors.
  2. Some software developers are not altruistic philanthropists. They expect to be compensated for their software development work. In the case of software which scratches their own itches, an acceptable form of compensation would be enhancements to the software, which fix bugs and – more interestingly – add new features. When wielded by such developers, GPL/LGPL are used much as traditional copyright law is used by creators to get compensated for their creations.
  3. In the special case of security software, which should be used by everyone, exemptions can be made on case by case basis. The reasoning is much the same as the one which led USA to release to USSR, in midst of the Cold War, certain technologies for securing atom bombs against accidental detonation. And those were days, in which people were executed for releasing nuclear secrets to the wrong parties (witness the Rosenbergs affair).

PyGuile – Part 5 – Python objects (PyObjects) as proxies for Guile objects (SCMs)

An essential part of integration of Scheme (as implemented in Guile) and Python is allowing Python code to call back code implemented in Scheme. It is also desirable to be able to access data and invoke methods on otherwise-opaque objects created and managed in Scheme. The specifics of opaque object access should also be independent of the specific object system being used in the Scheme-written part of the application.

When implementing in PyGuile the proxying scheme, in which PyObjects serve as proxies for SCMs, the following need to be taken into account:

  • Data type conversion
  • Retention of references as a protection against garbage collection

Data type conversions

A Python callback can be expected to receive positional and keyword arguments, and return a result of any type. Therefore, templates (possibly trivial) for converting between PyObjects (Python data types) and SCMs (Guile data types) need to be associated with each callback.

In the case of objects, we need to associate, with each attribute getter, a template for converting the value from SCM into PyObject. With each attribute setter, a template for converting the value from PyObject into SCM needs to be associated. With each method, which can be invoked on the object, minimum two templates are needed. Three templates should be provided, in case the object needs to be manipulated by an interface, which expects both positional and keyword arguments in the object’s methods.

All the templates needed to work with a SCM (as a callback or as an object) are associated with it when it is wrapped as it is being passed from Guile to Python.

Retention of references

PyObjects, which wrap SCMs, are not expected to be seen by Guile’s garbage collector. Therefore, we need a mechanism for protecting SCMs referenced by PyObjects.

Due to efficiency considrations, Guile’s scm_permanent_object, scm_gc_protect_object or scm_gc_unprotect_object should not be used on every SCM passed to Python. The solution is to create a set object in Guile, protect it using scm_permanent_object (a single call) and then register in it all wrapped SCMs. When a wrapping PyObject’s __del__ function is invoked, one of its actions is to remove the corresponding SCM object from the set. The set will be implemented using a standard hash table, whose keys will be indexes and the data – the SCMs themselves.

Two 25th year anniversaries

One famous anniversary is the 25th anniversary of the GNU project, which happens today.

One much less famous 25th anniversary will happen three days from now, on Sept. 30, 2008.  This is the best choice for an official starting day of the Israeli TDD Project.

On Friday Sept. 30, 1983, I at last went to the computer shop, plucked down my money and bought my Commodore 64 home computer.  This model was chosen because it supported software-defined fonts, and because it had a cheaper brother, known as VIC-20.

My game plan was to use the Commodore 64 to develop software for both VIC-20 and Commodore 64.  This software was to serve as terminal/chat program, which supports textual communication in Hebrew.  At the time I already had a 300bps modem connected to an ADM 3A terminal, which belonged to my employer at the time, and which I used to connect to my employer’s computer systems and monitor jobs, which ran overnight.

When I returned home with my spanking new computer, I found in my mailbox a letter, which took 23 days to reach me.  The letter was from Susan Bullowa, who subsequently partnered with me in the project.  It took us a while to meet, but when we met, it turned out that she has a lot of useful information which complements my own information.  And on the other hand, I had in my possession technical information and experience, which complemented hers.

And the rest, as they say, is history.

PyGuile – version 0.1.0 has been released for beta testing!

UPDATE: At  22 May 2016, I uploaded the project to Github. You may find it in https://github.com/tddpirate/pyguile.

DISCLAIMER: the software has not been really finished and it is lacking some useful features such as Python exception handling by the Scheme side.