Watching the birth of modern computing – EWD 35

EWD 35 starts out in typical Dijkstra way.

It is not unusual for a speaker to start a lecture with an introduction. As some in the audience might be totally not familiar with the issues that I wish to address and the terminology, which I will have to use, I will to give two examples as a means of introduction, the first one to describe the background of the problem and a second one, to give you an idea of the kind of logical problems, that we will encounter.

The story that EWD 35 tells is a brief history of the resolution to the scientific topic that brought Dijkstra his fame: the problem of synchronising parallel processes and the invention of the the concept of the semaphore for these types of problems in computing.

Today it is almost impossible to imagine a time in which this problem was still unsolved. Collaborating parallel processes, semaphores and indivisible operations have become a such a commodity in computing. But at that time computing meant sequential processes and parallelism of interacting processes was being looked at for the first time.

In 1959, the question was of whether the described capability for communication between two machines made it possible to couple two machines such, that the execution of the critical sections was mutually excluded in time. In 1962, a much wider group of issues was considered and the question was also changed to “What communication possibilities between machines are required, to play this kind of games as gracefully as possible?”

A side note. The word “required” and “possibilities” here do not cover the meaning of Dijkstra’s original in Dutch “welke communicatiemogeljkheden tussen machines zijn gewenst”. I would say “which communication facilities between machines are desired” – expressing better that Dijkstra is in the mode of designing the thing, thinking up these communication facilities.

Another side note, much of Dijkstra’s beautiful loose writing in Dutch is lost in this straightforward translation to English here. For example, we can translate “Jantje” to “Johnny” but in Dutch we have a completely different image in our head when we see Jantje than we someone, Dutch or non-Dutch, would have with Johnny.

Dijkstra uses the word machines in the paragraph quoted above. The terminology developed further and today we would call these, a bit more abstract, processes.

Further in his article he gives an insight into the potential for his “machines” and sees them simulated on a central computer. We really have to imagine this is a remarkable insight in the future. At that time computer ran single tasks. Running multiple processes at the same time on the same hardware was at best experimental. He makes this remark in the context of alternative ways of having machines collaborate and let them wait on each other by building in wait times in case they need access to the same resource.

However, if we consider now, that will be the majority of these machines will be simulated by a central computer so that any action in one machine can only be performed at the expense of the effective speed of the other machines, then it is very costly using a wait cycle to demand attention of the central computer for something completely useless.

The basic problem Dijkstra extensively examines is best described by Dijkstra in the following sentences. One machine wants to assign a value to a shared variable, after testing its value. For example something like:

if x=3 then x :=4 else x:=5

Another machine is trying to do the same thing, at the same time. What happens if machine 1 tests for the value of x, while at the same time machine 2 changes this value. Or, what happens if they both change the value of x at the same.

Dijkstra indicates a mechanism is necessary which he call indivisible actions. Today these things are indivisible, uninterruptible or atomic operations or instructions.

These two actions, assigning a new value and inquiring about the current value are considered indivisible actions, i.e. if both machines wish to “simultaneously” assign a value to a common variable then the value assigned at the end is one or the other value, but not some mixture. Similarly, if one machine asks for the value of a shared variable at the time that the other machine is assigning a new value to it, then the requesting machine will receive or the old or the new value, not a random value.

Having these instructions is key to the solution of the problem of interaction sequential processes.

In EWD35 Dijkstra then goes on to describe, in a rather lengthy paragraph – but remember this was front end research at that time – the invention of the semaphore in computing.

The programmed wait cycle that exists herein, is of course very nice, but it did little to what our goal. A tiny wait cycle is indeed the way to keep a machine busy “without effect” . However, if we consider now, that will be the majority of these machines will be simulated by a central computer so that any action in one machine can only be performed at the expense of the effective speed of the other machines, then it is very costly using a wait cycle to demand attention of the central computer for something completely useless. As long as the wait cycle cannot be exited, in our opinion the speed of this machine may be reduced to zero, To express this we introduce a statement instead of wait cycle, a basic instruction in the repertoire of the machines, that may take a very long time. We indicate this with a P (to Pass); in anticipation of future needs, we represent the statement “SX: = true” by “V(SX) – with V of “vrijgave” (in English: release) (This terminology is taken from the railway environment. In an earlier stage the common logical variables were called “Semaphores” and if their name starts with an S, it is a reminiscence of it). The text of the programs in this new notation is as follows:

“LXi: P(SX); TXi; V(SX); proces Xi; goto LXi” .

And you hold your breath, watching the birth of modern computing here in EWD 35.

The rest of the article provides the proof that this mechanism holds for any number of machines.

Dijkstra in EWD 32 on the tool, how it should be worthy our love, and show: Elegance and Beauty

In EWD 32 Dijkstra shares his “meditations” on the state of the Art (or rather Science, as he prefers to say) of Programming. Machine design was ugly, programming as a discipline was undeveloped. This was 1962.

Programmers were hired for applying tricks and Dijkstra loves the development that there is

… the slowly growing group of people who think it more valuable that the man should have a clear and systematic mind.

He goes on to discuss how programmer and machine designer should collaborate to create better machines and programming languages. Which was very necessary because Dijkstra believed at that time the computer manufacturing industry was taking over computer design from universities. But this brought a commercial angle to computer design that Dijkstra was unhappy with.

They seem to design for the customer that believes the salesman who tells him that machine so-and-so is just the machine he wants.

Dijkstra goes on to share his thoughts on how to improve The Tool – by which he means the programming language, translator and machine. Nowadays we have so many languages and machines, we hardly think about this tool. We think of tools as tools: a given rather than a thought. And of course we have massive debates about programming languages, hardware etcetera. But some of the concerns have disappeared. Nobody really seems to care anymore about machine design. It has become a commodity. It should be fast and robust. Hardware hardly provides any distinguishing features. If so, it is about size and energy, and no longer about performance and reliability.

But the last one he mentions is an eternal difference, one which we still haven’t landed on. And maybe we never will. Because it is a subjective one. A characteristic you wouldn’t expected in our Beta world of computers and programmers.

As my very last remark I should like to stress that the tool as a whole should have still another quality. It is a much more subtle one; whether we appreciate it or not depends much more on our personal taste and education and I shall not even try to define it. The tool should be charming, it should be elegant, it should be worthy of our love. This is no joke, I am terribly serious about this. In this respect the programmer does not differ from any other craftsman: unless he loves his tools it is highly improbable that he will ever create something of superior quality.

At the same time these considerations tell us the greatest virtues a program can show: Elegance and Beauty.

Araki en Maier in FOAM, 2015

2015. Amsterdam.

In the Stedelijk Museum large, dark paintings by Marlene Dumas. Not very colourful.

In FOAM lives Araki. With sensitive images of his life and especially his wife. The images demonstrate his love for her. After her death he shifts to pornographic and sadomasochistic topics. Then he finds rest in large, very colourful stills of flowers against a black background.

Vivian Maier has a small exhibition in the corridors and the small rooms in the back of FOAM. She  is at least as interesting. Wonderful street photography. Unfortunately it is extremely busy in the small passages of FOAM. Visitors shuffle breast to belly. I flee.

The Zeedijk is a mini Chinatown.

Edsger Dijkstra – blogger avant la lettre combines deep science with deadpan humor

Dijkstra, Holland’s most influential and remarkable computer scientist, was a blogger avant la lettre.
Her blogged in his EWDs (his initials – Edsger Willem Dijkstra) whatever he wanted to say – could be drafts of scientific papers or trip reports or angry letters.

His EWDs are fun to read. The language is precise but light, and pervaded with beautiful language, metaphors, humorous by-sentences and jokes.

If you can start a very theoretical discussion in this way, you are a genius of language, besides science. Here in EWD 28.

A machine defines (by its very structure) a language, viz. its input language: conversely, the semantic definition of a language specifies a machine that understands it. In other words: machine and language are two faces of one and the same coin. I am going to describe such a coin. I leave it entirely to you to decide which of these two aspects of the subject matter of my talk you think the most important as it is rather ridiculous in both aspects.

Who is going to write the biography of this broadly respected Dutch computer scientist?
Will probably end up kickstarting it myself.

Cees Nooteboom – 533 – een dagenboek

Een dagenboek.
Nooteboom verteld over zijn dagen in zijn Menorcaanse woning. Microscopische beschouwingen over zijn cactussen, de insecten rond zijn woning, de yucca, de ruines op Menorca.

Zorgvuldig beschreven in een nauwkeurige stijl die doet denken aan de veel minder bekende Tim Robinson die de Aran eilanden beschreef en ik leerde kennen via Boudewijn Buch.

Nooteboom schrijft over Brecht en Frisch. Over de muziek waar hij naar luistert.
En dan ook macroscopische beschouwingen over de reis van de Voyagers.
Over de kleine en grote dingen van het leven.

Een prachtige kruimel op de rok van Nooteboom’s universum. ( naar Lucebert)

Erich Maria Remarque – Im Westen nichts Neues

(All Quiet on the Western Front)
Incredible story about a German soldier on the Western front in France during the First World War.
Young men are mangled and deformed by the atrocities they experience in the trenches.
People die like flies. Soldiers must leave their wounded mates in the no man’s land between the fronts. From the trenches their hear them cry for help.
That same atmosphere as Celine’s Voyage au bout the la nuit.
Still, Remarque keeps some form of distance to the story, while describing the horrors of the war and the trenches. He analyses without becoming personal. Numb, dull, demoralised.

Unavoidable? The First World War – John Keegan

I recently visited Belgium, the area of Ieper. The remains of the First World War there are impressive.
I got interested and purchased The First World War by John Keegan,  which was according to the mass on google the essential guide to the First World War. My notes of this reading.
The incredible back story to this War. Starting with the long envisioned Schieffenplan, which had been cooking in Germany long before the war started. All the parties seems to be preparing their armies for a war. At a certain point the war became unavoidable.
How easily the war could have been prevented by some basic diplomatic actions.
Both sides hold on to very basic offensive tactic of frontal offence. Leading to many death. Both sides undertook these initiatives, which hundred thousand deaths or more in a week. This happened at all frontiers.
Besides the most well-known frontier in the West, mainly in Belgium and Norther France, the War was fought Africa in the German colonies, in the Middle East (Turkey being the ally of Germany in this war, in the Caucasus, Greece, Serbia, and at sea.
Germany was very successful with their submarines.
The war led or coincided with the downfall of the three large power centres in Europe: the tzar in Russia, the Austro-Hungarian emperor and the last emperor of Germany.
After the war Europe was fragmented in many new nation states due to the downfall of Germany and Austria-Hungary. This instabilities caused by this outcomes are still felt.
Keegan ends with the remark that is difficult to understand why a prosperous continent risked their achievements and values in ended up in such a bloody conflict.

A war that should never have happened. Not only was it meaningless. It was preventable.

The Hard Thing About Hard Things – A no BS startup management guide

Probably best book for founders from practical perspective: The Hard Thing About Hard Things by Ben Horowitz. Read next to Zero To One from Peter Thiel.51zuuyaopil-_sx329_bo1204203200_

Not one of the simple concept blabla management books, but very practical and illustrative on many aspect of being the leader in a growing startup.

About the CEO as decision making machine, making decisions with little information. Against odds and diverse interests.

About hiring the right team.

Breathes humility. No blasé BS.

Horowitz was the CEO of Netscape, the company that ws one of the first to free us from Microsoft’s hold on the computing industry.

Someone writing new functionality for computers no longer wrote for Microsoft’s proprietary platform. Instead, they wrote to the Internet and World Wide Web’s standard interfaces. Once Microsoft lost its grip on developers, it became only a matter of time before it lost its monopoly on operating systems. Along the way, Netscape invented many of the foundational technologies of the modern Internet, including JavaScript, SSL, and cookies.

Horowitz disagrees with the thinking that companies should ask customers what they want. Like Steve Jobs he disagrees, and is convinced companies themselves are zero-to-oneresponsible. This contrasts strongly with current views in larger companies that define the customer’s input as the most valuable for the determination of the way forward with products.
But as Steve jobs said

people don’t know what they want until you show it to them, Horowitz holds a similar opinion.”

Horowitz:

“It turns out that is exactly what product strategy is all about—figuring out the right product is the innovator’s job, not the customer’s job.

“The customer only knows what she thinks she wants based on her experience with the current product. The innovator can take into account everything that’s possible, but often must go against what she knows to be true. As a result, innovation requires a combination of knowledge, skill, and courage.

Horowitz provides very practical advise, hates badly run organisations and has clear views on how to improve.

In good organizations, people can focus on their work and have confidence that if they get their work done, good things will happen for both the company and them personally. It is a true pleasure to work in an organization such as this….
In a poor organization, on the other hand, people spend much of their time fighting organizational boundaries, infighting, and broken processes. They are not even clear on what their jobs are, so there is no way to know if they are getting the job done or not.

He goes into very practical matter like how to hire execs and other staff. How to manage the sales process. How to execute performance evaluations.

Often companies defer putting performance management and compensation processes in place. This doesn’t mean that they don’t evaluate employees or give pay raises; it just means they do so in an ad hoc manner that’s highly vulnerable to political machinations.

Therefore, you must have a formal, visible, defensible promotion process that governs every employee promotion.

Promoting people above there competency is not only a danger to watch out for – the famous Peter principle.

But also if f you unjustly promote someone to a title that is crappy person he will become the reference – the Law of Crappy People.

The Peter Principle holds that in a hierarchy, members are promoted so long as they work competently. Sooner or later they are promoted to a position at which they are no longer competent.

The Law of Crappy People states: For any title level in a large organization, the talent on that level will eventually converge to the crappiest person with the title.

He quotes Zuckerberg who wants engineers at same level as non-technical staff.

Next, he finds that business people often carry inflated titles versus their engineering counterparts. While he recognizes that big titles help them out externally with getting meetings, he still wants to have an organization where the product people and engineers form the cultural core, so he strives to keep this in check as well.

He warns for short the term thinking that may lead management in making business decisions too much.

“While it may work to have individual employees who optimize for their own careers, counting on senior managers to do all the right things for all the wrong reasons is a dangerous idea.

“technical debt” is now a well-understood concept. While you may be able to borrow time by writing quick and dirty code, you will eventually have to pay it back—with interest. Often this trade-off makes sense, but you will run into serious trouble if you fail to keep the trade-off in the front of your mind. There also exists a less understood parallel concept, which I will call management debt. Like technical debt, management debt is incurred when you make an expedient, short-term management decision with an expensive, long-term consequence. Like technical debt, the trade-off sometimes makes sense, but often does not. More important, if you incur the management debt without accounting for it, then you will eventually go management bankrupt.

What to read next:
Peter Thiel – Zero To One.

What to listen to.
a16z podcast.

Go Set A Watchman: dark and cynical on the still continuing difference between the North and the South of the United States

Go Set A Watchman is as the sequel to To Kill A Mockingbird. But it is darker 51cc2jfysbl-_sx323_bo1204203200_the The Mockingbird.

Atticus, the moral hero in the Mockingbird, falls of his pedestal in the Watchman. Especially in the eyes of his admiring daughter, Scout.

There is no more hope for Atticus, who fights against injustice in the Mockingbird. The coloured people have gotten their own lawyers and are no longer dependent on the few whites defending them. This development however has not led to more unity. It has increased more separation. It has raised suspicion between black and white. It has shattered the balance in the village.

Scout struggles with this character of the South.

Dr Finch, Atticus brother explains to her the history of the war of the south. It is a battle for keeping their identity.

“Now then, Scout,” said her uncle, “Now, at this very minute, a political philosophy foreign to it is being pressed on the South, and the South’s not ready for it – we’re finding ourselves in the same deep waters. As sure as the time, history is repeating itself, and as sure as man is man, history is the last place he’ll look for his lessons.”

The Watchman describes that sharp difference between republicans and democrats in the United States, which we can still find today. That same identity battle. The war between North and South is still ongoing. Nowhere is the battle between left and right so fundamental and also obstructive as here in the US. I was stunned to read that so little has changed.

More shocking I found the character development of Scout. The Mockingbird and The Catcher in The Rye were these fantastic novels in which the juvenile protagonists stand by their naive but authentic self, do not give in no matter how bad it ends. But in The Watchman, the idealistic, radical character of Scout is crushed and she finally seems to submit to indolence, she finds her home and inner stability after a big fallout with Atticus.

What a darkness: equality fails, ideology fails, cynicism and indolence prevails.