Toon Moene's Home Page

Toon Moene's Home Page

Hoe sterk is de eenzame fietser die kromgebogen over zijn stuur tegen de wind zichzelf een weg baant ?

The Daily Grind

I worked as a researcher at KNMI, the Dutch Weather Service, on improving the HIRLAM (until March 2012) and HARMONIE weather forecasting systems (like here and here), until my retirement on the 1st of April, 2024. These are the slides of my last presentation, on the 19th of March, 2024.
In short: My job was to predict the future, and I was paid to do this.
Recent weather forecasts using HIRLAM. Those may continue as long as I have access to the necessary input data in spite of being retired, thanks to KNMI graciously allowing this.

Both weather forecasting programs are (for the most part) written in the Fortran programming language. An "early" reference to Fortran was in the movie Hidden Figures, based on the book Hidden Figures: The American Dream and the Untold Story of the Black Women Who Helped Win the Space Race:

At ACD, it was her job to convert the engineers' equations into the computer's formula translation language - Fortran ...

And then here is the final recognition by Congress - note how Margot Lee Shetterley mentions Fortran in her speech ... it was integral to their work in the end.

An example of my work is the reforecasting of the Feb. 1, 1953 storm for the Netherlands late 2002.

This disaster took place in the middle of the night during the 50's of the last century. If you want to get an idea of the damage done by a wall of sea water rising 6 meters above the ground your house is built on, watch this (native) footage of the March, 11th, 2011, tsunami in Japan, in broad daylight - the result of a 9.0 magnitude earthquake.

To connect this to the present: the Great Storm of 1953 led to the construction of the Delta Works as a result of its large toll on human life. The Maeslantkering is a part of this, and as Wikipedia correctly notes:

The barrier is connected to a computer system which is linked to weather and sea level data.
The weather (and sea level) data was computed by KNMI, based on HIRLAM, until late 2022.

I was one of the two Dutch delegates to the Technical Advisory Committee of the Council of the European Centre for Medium Range Weather Forecasts until my retirement.

Me, at work (summer of 2023):

For Fun ...

No Real Programmer works nine-to-five, unless it's the ones at night - or, in the alternative: Hackers are from Mars, Corporations are from Venus (Mike Meissner and David Edelsohn).

Why is Fortran fun ? Because you get to work with people like Sourcery, Inc !

Now for the more mundane issues:

I am a member of the GCC Steering Committee and was an alternate member of the Fortran Standardization Committee (1999-2017). The latter committee greeted two new members in 2015. In 2016 two more members joined, augmenting the Committee from 7 to 11 members in 2 years time. [Being an alternate meant that I could represent a permanent member, but only if s/he was absent.]

I am a GNU Fortran maintainer, though my last contribution is quite ancient: adding the possibility to set uninitialized automatic arrays to a predefined value. I hope to return to working on gfortran when retired (April 2024).

It is fun to watch this animated history of the development of GCC.

To compile a fresh copy of the development sources and run its test suite, I use this script. It assumes a worktree checkout of the git branch in $HOME/compilers. It is used with this test_summary script.

Aside from running the compiler's test suite, it is also useful to run the LAPACK test programs:

In the past, when Fortran was a necessary ingredient in selling 8-digit-dollar hardware, its standardization was a fierce battlefield - see The Fortran Saga. On second thoughts, it's still needed to sell 7-digit GBP/year hardware as shown by the supercomputer used at The European Centre for Medium Range Weather Forecasts which employs three different Fortran compilers, one of which is GNU Fortran.

For some "recent" controversy, view the Coarray addition to the Fortran 2008 Standard and my take on it in February 2008, although 15 years later it isn't controversial anymore. For its run time development in relation to GNU Fortran (and other compilers), see the OpenCoarrays web site. I wrote a simple "mock" weather forecasting program using coarrays to test it and the upcoming "native" coarray implementation in GNU Fortran that uses a shared memory approach to coarrays on multi-core workstations.

Note that for the first twenty years all GNU Fortran developers were volunteers:

Those working on GCC came together once a year during the GCC Summit in Ottawa until 2008, and gather from 2009 onwards in Montreal, but from 2010 (October) again in Ottawa.

That is, since 2003. Before that, there were occasional gatherings like during the Linux Expo's. At the last one, in 1999, I presented the following - discussing g77, of which these are the accompanying slides.

After 2010, annual "GNU Tools Cauldron" sessions were organized, like this one in 2018. This was the one in 2019. The 2020 and 2021 meetings (GNU Tools @ Linux Plumbers Conference) were held virtually. The 2022 meeting of a GNU Tools Cauldron was in person (actually, hybrid) again. This was the 2023 one (in person). This was the 2024 one and these are my slides (libreoffice) and in PDF.

Vectorization and transcendental functions

Note that vectorization plays a major role in Fortran, because of its emphasis on arrays and array expressions. In this mail on the 6th of January 2016 I raised the question about using glibc's vectorized math library (present from version 2.22 onwards, released on the 14th of August 2015) in GCC's optimization, so that the following assignment could be vectorized:

REAL LNPS(NLON, NLAT), PS(NLON, NLAT)
...
LNPS = LOG(PS)    ! Compute natural logarithm of surface pressure

I suggested this solution in a subsequent mail on the 7th of January 2016 on practical grounds, following prior art. This approach was accepted by one of the maintainers of GCC in this mail on the 8th of January 2016. On the 10th of April 2018, Jakub Jelinek suggested the following alternative approach. An implementation is this header file, which should be placed in the compiler's "finclude" directory (you need a recent - December 2018 - version of trunk for that to work). To test it, compile this code with the -S -Ofast -fopt-info-vec-all flags on a 64-bit Intel machine. During 2020 it was installed by default for gcc version 9 or 10 on major GNU/Linux distributions.

Sudoku

Aside of this, everyone wants to have his or her own Sudoku solver. This one solves 2x2, 3x3, 4x4, 5x5 and 6x6 Sudoku puzzles, recursively, in parallel (Here are valid 3x3 and 4x4 ones). This 5x5 one seems genuine, but I haven't been able to solve it, despite spending approximately 75 CPU days of my workstation on it (12x parallellized). A 6x6 one (converted as follows to my rendition), that I found on Gareth Moore's site, has no solution. So I tried removing clues at random ... After removing the 35th, I was still left with this, of which the analysis cost this amount of time on one node of our HPC (2.5 days of elapsed time, 65 days of CPU time).

Here is another purely integer program - to compute Pythagorean triples.

More Fun

FUN THINGS TO DO WITH FLOATING POINT NUMBERS
Print ThemCompare Them For EqualityCount With Them
PRINT*,87654321.
END
PRINT*,1.3+1.4==2.7
END
PRINT*,.1+.1+.1+.1+.1+.1+.1+.1+.1+.1==10*.1
END
Extensive information on the perils of floating point computations is available here. Note: Its publication date is March, 1991, months before the collapse of the Soviet Union.

... and Non-Profit

I wrote, years ago:

Africa is not the "Dark Continent". Africa is the Continent of Light, and as soon as the children in the One Laptop Per Child project realize this, they will reap huge benefits from the light-starved Northerlings.

This certainly was not-for-profit. But now we have the US-Africa Summit to look back on, which is definitely also necessary. And then there is President Obama addressing the African Union.

By the way, some might think the present strife on the African continent makes it unsuitable for economic prosperity. Let me recall the "situation" of the European continent just 75 years ago - well within my parents' memories: The Second World War.

... More Non-Profit

Another volunteer activity I was involved in is the "Wereld Winkel Maartensdijk" (whose activities in the Anglo-Saxon world are better known as Fair Trade).

To give you an impression of this work, I show you the Wereld Winkel De Bilt nearby.

More Free Stuff

And then, besides free software, there's free music or ... free speech - and here's another one in the same year. And then - 50 years ago - we thought the movement died. But this person rose to the calling.

And here is a view of my generation on the Reign of Nixon ("The Begatting Of The President"), also not really free:

Amazingly, the full text is on Wikipedia (The Begatting of the President), with links to relevant articles in Wikipedia.

The Biblical passages referred to are not referenced. I found the following:

Music I love

Neder Pop and this one, which is more about m-m-m-y g-g-g-eneration.

Teaching

I have volunteered for remedial teaching in my neighbourhood during some 15 years. I teached (individual) courses of mathematics, physics and chemistry at the high school level.

If you think that's easy, read up on the quiz of the three doors and take notice of the huge number of (learned) people who got it wrong - defeated by the decision tree for the Monty Hall problem which is run-of-the-mill mathematics for high school students over here.

Outside my Comfort Zone and Something for my Retirement

There has been a lot of press about gravitational waves recently. I received this book as a birth-day present to do something about them.

My Summer Holidays

I am a serial cyclist. Note this "Fiets Demonstration Tour" Amsterdam Fikse Fiets Demonstration. By the way, they really started in 1974. If you think that was non-violent, I have a bridge to sell you - car drivers wielding iron rods to "disperse" us.

Cycling Europe and the US (photographs to be provided):

So that's roughly 52,300 km (32,500 miles). However, my daily commute consisted of:

(on the order of 161,320 km ~ 100,000 miles).

Miscellaneous Mischief

Some sport that I love: Kees Verkerk winning the 10 km speed skating race in Inzell, 1969. Note how the 24:29 minute video includes the complete 15:03.6 minute race by Kees. The Norwegian commentary is hilarious; they correctly note that Kees gaining 2 seconds per round would win him the European Championship.

Other important skating races in the 60s:

This is more fun: Ard en Keessie.

The World Championship with the largest difference between numbers 1 and 2 (1979).

And a blast from the past (September 1971)

Two years before that, this was a TV series that everyone flocked to:

Wikipedia's explanation: Floris (TV series).

The footage, as saved on Youtube (with English subtitles):

One of the defining characteristics of this series, above contemporaries like "Ivanhoe" (British), "Thierry la Fronde" (French) and "Johan en de Alverman" (Belgian) was that it took place in actual history, pinned down in time by the following historical figures, which played a role in various episodes:

The performance is hilarious, and has several layers, which makes it interesting for adults, too (I watched it first as a 13 year old). By the way, the series has two scenes of water boarding, a manner of torture that is banned by the civilized world.

And ... three years before that, this was a TV series that everyone watched:

Four years earlier, we were struck by The Thunderbirds. Love the Cold War, for you have survived it ...

This was what it looked like - even though the original was in black-and-white on our television.

Note that this was all done before the arrival of Computer Generated Imaging (CGI), by having puppets on strings performing acts. See the operation of boats on water for what the miniaturization couldn't solve.