Category Archives: History

Gonder (አስቴር አወቀ – ጎንደር)

A song from a former capital city (the 4th) of Ethiopia, as performed by Aster Aweke on her new album Checheho.

Gonder is known for preserving tradition and custom like the iskista dance, as opposed to the more diverse and modern capital city Addis Ababa.

Gonder also was the city where Italian forces made their last stand. The British 12th (African) Division led by Major-General “Fluffy”, along with the Kenya Armoured Car Regiment and Emperor Haile Selassie’s patriots, ended the occupation of Ethiopia when they seized Gonder in 1941.

IDLELO 5 Conference to be in Nigeria

The Free Software and Open Source Foundation for Africa is planning their 5th African Conference on FOSS (Free and Open Source Software) to be held in Abuja, Nigeria

IDLELO 5 will consist of hackathons, awards, tutorials, hands-on trainings, demos, field visits and presentations on key FOSS and information technology areas. It will welcome a diverse number of parallel events, an exhibition and a business round table. The conference will welcome FOSS and IT keynote speakers, project, companies, solutions and innovations, not just in Africa, but across the global FOSS community. IDLELO 5 will mark the 10 years of the Free Software and Open Source Foundation for Africa (FOSSFA)

[…]

IDLELO is a Southern African word meaning “Common Grazing Ground”.

The maddog keynote from IDLELO 4 is reprinted in Linux magazine

People sometimes have a problem understanding “software freedom”, so I use the term “software slavery” to show the opposite:

Software slaves are told:

  • when to upgrade their software
  • how many computers they can put their software on
  • how many users can use the software
  • how the software will or will not work
  • what languages the software will support
  • when they will receive needed bug fixes or enhancements

Ironically only the richest peoples can afford software slavery. Poor people are persecuted as “software pirates”.

This is obviously far too broad a definition. Maybe it’s meant to be provocative rather than useful. After all, it’s a keynote speech in Africa.

The first thing that comes to mind is software as a service (SaaS) could easily be defined as slavery even if it runs on FOSS. Even FOSS users in their own environment are told what to do and when (e.g. ubuntu-security-announce).

The difference between freedom and slavery does not seem to be just about being given instructions. It is about a user becoming a property of the software company — penalized for any attempts at liberty.

Nietzsche at DefCon19

Friedrich Nietzsche will be showing up in two presentations at DEFCON this year. Last month I offered a translation of his Aphorism 146 from Jenseits von Gut und Böse (1886):

He who fights with monsters must see to it that he does not thereby become a monster. And if you look for long into an abyss the abyss also looks into you.

Not everyone agrees on the translation, obviously. Here are the talk titles.

  • “Whoever Fights Monsters…” Confronting Aaron Barr, Anonymous, and Ourselves
  • Staring into the Abyss: The Dark Side of Crime-fighting, Security, and Professional Intelligence

The philosopher argued that it takes courage and strength to live authentically, to find a path to follow of ones own choosing rather than follow the groups and organizations that offer an “escape”.

He exaggerated his case to make a point but it still seems to have survived. Will be interesting to see if the presenters try to reconcile his harsh critiques of patriotism and regulation, or even his critique of the environment in which they are presenting.

Software Transaction Memory Risks

Output stream has a detailed and entertaining review of handling concurrency with software transaction memory (STM).

Suppose I have a small bank with only two accounts, and all that can happen at this bank is money can be transferred from one account to the other. A “correct” program…[is] when a single thread is performing the transfers, but when multiple threads are performing the transfers, bad things happen.

Imagine standing in a queue in England before WWII. Everyone would fight and pick their way to the teller in order to get service. Any group approaching a crowd in size would get so wildly out of control even the French and Italians complained about barbaric behavior of the English. During the hard times of war, however, the orderly queue was introduced with much propaganda to prevent inefficient riots and fights over scarce resources.

English orderly queuing behavior evolved into a common rule still present today, enforced by others waiting their turn. What happens if people decide to abandon the rule? The old race conditions, incorrect sync, and deadlock would return, as explained in a presentation by Brian Goetz.

STM, instead of trying to enforce concurrency controls offers an isolation boundary for transactions, like moving transactions from an open teller queue into a private office at a bank. Transactions are behind a closed door instead of subject to interruption and blocking.

STM is an alternative to lock-based synchronization. In essence it places a guard around a specified memory location (in our example we’ve placed it around the “accounts” map). The guard is called a Ref. You can only gain access to the memory location by initiating a transaction with an atomic block. Once inside the atomic block, you can gain access to the data in the memory location through the Ref and make modifications. Modifications are isolated, so changes can only be seen within the scope of the atomic block. When the transaction ends, an attempt is made to update the memory location atomically. However, it may be that another thread has committed a transaction before the attempt. If this is the case, the logic inside of an atomic block is retried until an update can be made.

Of course the boundary also has rules to reduce risk for STM. Once inside, bad things can still happen from dependencies, races and interruptions:

  • disallow side-effects
  • disallow changes
  • use independent business logic