Tech-inzichten door Niek de Greef. Reflecties op technologie, software development en de impact van digitale innovaties op cultuur en maatschappij.

Elegance versus efficiency

History repeats. E.W. Dijkstra argued that programming elegance and ease should be more important than efficiency. Many of his contemporaries opposed this view. Dijkstra held programming should be made easier, through definition of a machine-independent programming language. Algol was machine independent. FORTRAN was full of machine dependencies.

To Dijkstra, inefficiencies are solved soon, by next generation computers that are faster.

Today, efficiency is an afterthought in programming. But for different reasons. Today, (perceived) speed of delivery is key. Which leads to a waste of computer resources in very many cases. I write perceived between brackets. Because it is seldom better. Sloppy, hasty work leads to massive rework. But that is accepted.

The Phoenix Project – a must-read

On the back of The Phoenix Project it says “a must read for business and IT executives”. It is.The Phoenix Project

You need data backing up issues. Not hearsay.

Your job as a VP of IT Operations:
– Ensure a fast, predictable, uninterrupted flow of planned work that delivers value to the business.
– Minimize the implact and disruption of unplanned work in order to provide stable, predictable and secure IT.

The Three Ways:

  1. Ensure a fast flow from Dev to Ops.
  2. Shorten and amplify feedback loops.
  3. Foster a culture of experimentation and learning from failure.

There is a Brent in every organization. The wizard that pieces everything together and seems to be a required resource on every project.
His knowledge must be documented, his process automated.
If he is not a Sharer but a Hoarder, keeping all information to himself, he must be fired eventually.

Four categories of work:

  • Business projects
  • Infrastructure/IT projects
  • Changes
  • Unplanned work

The theory of Constraints:

  • Identify the constraint
  • Exploit the constraint: make sure it can not waste time
  • Subordinate the constraint

Work in progress (WIP) is the BIG Killer for productivity. Get thing done.

Technical debt: when not paid down, interest grows over time. You keep paying (more and more) interest in the form of unplanned work.

A work center: man, machine, method, measures.

Start with thinking totally extreme: think improving to the extreme (deploy from once every 3 month to 10 times per day).

IT is at the core of every modern organization. Ignoring that will bring the organization in Big Trouble.

Hoarders vs Sharers. People holding information about tasks they only know how to do. Get rid of that/them.

Nice summary in the back.

Boekhouden: van Gnucash naar EasyZZP en Yukiworks

Toen ik pas begon met mijn bedrijf deed ik zelf de boekhouding. In het begin was dat eenvoudig. Ik gebruikte het open source tool GnuCash

Ik moest mezelf een beetje trainen in de principes van het dubbel boekhouden, en in het opzetten van een structuur in GnuCash, maar daarna was e.e.a. prima bij te sloffen. Gnucash is goed gedocumenterd. Het heeft niet een heel elegante interface maar er is goed mee te werken. Bovendien krijg je er een goed inzicht in de inkomsten- en uitgavenstromen van je bedrijfje door.

Op een gegeven moment werden de uitgaven en inkomsten wat omvangrijker, en heb ik gezocht naar hulp. Ik vond EasyZZP, een bedrijfje dat de boekhouding voor je overneemt voor een alleszins redelijk bedrag. EasyZZP maakt gebruik van Yukiworks als (online) boekhoudpakket.

Yukiworks is redelijk makkelijk te doorgronden software, hoewel je er als EasyZZP klant niet alle ins en outs van hoeft te kennen.  Yuki integreert met je bank waardoor je bij voorbeeld al je zakelijke transacties automatisch in Yuki kunt importeren. Er is ook een integratie met Op een gegeven moement werden de uitgaven en inkomsten wat omvangrijker, en heb ik gezocht naar hulp. Ik vond EasyZZP, een bedrijfje dat de boekhouding voor je overneemt voor een alleszins redelijk bedrag. EasyZZP maakt gebruik van Yuki als (online) boekhoudpakket. Dat is redelijk makkelijk te doorgronden software, hoewel je er als EasyZZP klant niet alle ins en outs van hoeft te kennen. Voor een alleszins redelijk bedrag verzorgt Yuki de boekhouding en de belastingaangifte.

Interacting with the drum – Dijkstra on multiprogramming and I/O handling

The X8 computer

Reading Edsger Dijkstra’s technical papers is rarely dry. In EWD 54, while designing critical operating system algorithms for the X8 computer, he explains I/O coordination using hotel guest registers and invents delightful Dutch neologisms like “tandepoetsprogramma” (toothbrushing program). It’s a masterclass in making complex computer science accessible, and entertaining.

The Challenge: Coordinating Drum Storage in 1960s Computing

Before solid-state drives revolutionized storage, computers relied on drum and disk storage, mechanical devices where data access speed depended on physical spindle rotation. Minimizing wait times for the spindle to reach the correct position was crucial for system performance.

In EWD 54, Dijkstra addresses a fundamental challenge: how should an operating system coordinate between waiting processes (what he calls “Abstract Machines”) and physical I/O operations (which run on hardware subsystems like drum storage)?

The complexity is considerable. The system must:

  • Queue I/O operations efficiently
  • Notify waiting processes immediately when operations complete
  • Handle error conditions gracefully
  • Minimize memory access and usage (measured in bits!)
  • Optimize drum movements to reduce mechanical delays

Abstract vs Concrete Machines

Dijkstra’s conceptual framework distinguished between:

Abstract Machines: The consumer processes running in the computer, waiting for I/O operations to complete. These represent the logical programs that need data.

Concrete Machines: The physical hardware subsystems (like drum controllers) that execute the actual I/O operations.

The operating system’s job? Orchestrate the interaction between these two worlds efficiently and correctly.

Making the Complex Comprehensible: The Hotel Analogy

Rather than drowning readers in technical specifications, Dijkstra employed everyday analogies. His most memorable: managing I/O processes is like running a hotel.

  • Guests = processes requesting I/O operations
  • Hotel rooms = allocated memory space for each process
  • Checking out = freeing memory when I/O completes

Rooms are freed using Dijkstra’s own invention: semaphores, the synchronization primitives that would become fundamental to concurrent programming.

This wasn’t just pedagogical whimsy. The analogy helped clarify the essential coordination problem: How do you track who’s waiting, assign resources efficiently, and clean up when operations complete?

Inventing Dutch Computer Science Vocabulary

Perhaps most entertaining is Dijkstra’s creative approach to technical terminology. Writing in Dutch, he coined new phrases that are both precise and playful:

Haastsituatie (racing condition): A timing problem where the outcome depends on the sequence of uncontrollable events. Dijkstra distinguished between:

  • The essential variant: Must be solved for correctness
  • The moral variant: Should be solved for efficiency

Tandepoetsprogramma (toothbrushing program): A routine that initializes variables to a clean state—like brushing your teeth before bed prepares you for sleep.

Scattered throughout are delightfully unscientific phrases:

  • “Dat is toch wel al te gek” (That’s just too crazy)
  • “Het is natuurlijk erg prettig” (It’s naturally quite pleasant)
  • “Over de administratie van een bevolking” (About the administration of a population)

The Technical Achievement

Beneath the charming presentation lies serious computer science. Dijkstra presents a high-level algorithm for operating system I/O handling that addresses:

  1. Minimal memory access: Every operation counted when memory was expensive
  2. Optimal drum movements: Reducing physical motion improved performance dramatically
  3. Robust error handling: The algorithm remains correct even when I/O operations fail
  4. Efficient memory usage: Measured in bits, not bytes or kilobytes

This work contributed to the theoretical foundations of multiprogramming: the ability for computers to run multiple programs seemingly simultaneously by rapidly switching between them.

Why EWD 54 Matters Today

Modern developers might wonder why anyone should care about drum storage optimization in 2025. Several reasons:

1. The principles remain relevant: Coordination between asynchronous operations is still a core challenge, whether you’re managing disk I/O, network requests, or cloud service calls.

2. Dijkstra’s methodology endures: Using clear abstractions, careful reasoning, and accessible explanations makes complex systems understandable.

3. Humor aids understanding: Technical writing doesn’t have to be humorless. Dijkstra proved that rigorous thinking and playful presentation can coexist.

4. Historical perspective matters: Understanding how pioneers solved foundational problems helps us appreciate modern abstractions and recognize when we’re encountering similar challenges in new contexts.

A Nerdy Hobby Worth Pursuing

Reading EWDs has become a hobby. Quite nerdy – I was told. But there’s something satisfying about following Dijkstra’s thought process through these papers. Each one is a glimpse into a brilliant mind grappling with genuinely hard problems while refusing to sacrifice clarity or personality.

If you’ve never explored the Dijkstra archive, EWD 54 is an excellent starting point. It showcases his technical brilliance, his pedagogical skill, and his conviction that computer science should be both rigorous and human.

After all, if you can’t explain drum storage coordination using hotel analogies and toothbrushing programs, are you really understanding it deeply enough?


Further Reading:

Related articles:

Art, Engineering, IT Architecture

Is Architecture an Art? Is IT Architecture an Art.

It is a debate, in fundamentalist IT architecture circles. Really.

Engineering is the application of mathematics, empirical evidence and scientific, economic, social, and practical knowledge in order to invent, innovate, design, build, maintain, research, and improve structures, machines, tools, systems, components, materials, processes and organizations.

Source:

https://en.wikipedia.org/wiki/Engineering#Business_Engineering_and_Engineering_Management

Art. The expression or application of human creative skill and imagination, typically in a visual form such as painting or sculpture, producing works to be appreciated primarily for their beauty or emotional power:

The art of the Renaissance

Great art is concerned with moral imperfections

She studied art in Paris

https://en.oxforddictionaries.com/definition/art

So, Architecture may be Art (most of the time).
IT Architecture is Engineering. There is no beauty or emotion involved.
(And also architecting buildings is largely engineering)

It the 19th centure the notion of Art emerged as an independent entity. Before that everything we call art today was plain craftsmanship. Business.

In the last century art movements have tried to redefine art as craft. I believe that was Bauhaus. Then art becomes engineering, again.

Everything is art.
Art is nothing, or everything.
Engineering, (IT) architecture is a method.
Art is an end state.