Two months ago I published Modern Fortran: Building Efficient Parallel Applications with Manning Publications. It was a long journey (3 years!) and here I describe my experience: The writing process, tools I used, working with Manning staff, the economics of writing a technical book, and challenges. Though the title of this article mentions the year 2020, my experience reflects the period from mid-2017 to late-2020. A few things may have changed in the meantime, but most of it is relevant. If you’re considering writing a technical book or have just started doing so, this article may help you.
Last week marked one year since the birth of the Fortran-lang open source community. A lot has happened and many of us who have participated agree that the progress exceeded our highest expectations. After two decades of a cold and desolate Fortran winter, are we approaching a new golden era of Fortran? We just may have a chance.
This is the story of the first year of the Fortran-lang community.
I went back to the earliest seed that I could find — a short and to-the-point article from August 2019 by the orbital mechanic and Fortran programmer Jacob Williams:
Abandonware is software abandoned by its maker.
People sometimes speak of it in a negative context. “Nobody uses it anymore”. “A waste of time invested”. “Why would they even make that?”. “What a failure!”
Abandonware is what’s left when its maker learned what there is to learn from it and moved on. It’s software that served its purpose. Finding what doesn’t work is a prerequisite for finding what works.
Abandonware is beautiful. It’s the evidence of creative process and fighting the resistance.
As long as there are creative and curious people around, there will be new abandonware. I wish more people made it.
A few days ago I got notice from Google Scholar about the first citation of my latest paper on drag coefficient in hurricane winds:
When I get these notifications, I go and look at the paper that cited it. Perhaps my results supported theirs, or maybe the Authors disagreed with something I wrote. The citing paper is Gauer (2020):
And the citing statement is:
As a conservative estimate, the drag coefficient cDa is assumed to be in the order of 0.01 (see for example Curcic and Haus, 2020).
There are two problems with this reference.
First, Gauer writes about…
Any scientific discipline that involves numerical modeling has three kinds of modelers:
Neither is better or worse than the other. Model developers (1) often also run models (2) to test and validate them. People who run models (2) typically do it for a specific research goal (3). Occasionally, they’ll also tweak the code to fit their need, which gives a glimpse into the model developer’s world. And then there are people who don’t fiddle with models at all…
I’ve suffered from sleep paralysis since adolescence. For several years I didn’t know what it was, or that it was even a thing. I experienced it simply as a recurring nightmare: I lay pinned to my bed, unable to breathe or make a sound, with a sense of immediate danger from an invisible evil presence in the room.
The worst was in my late teens and early twenties. I’d experience it a few nights per week, often a few times per night. Sometimes I’d wake up from a nightmare only to fall back into it. I once woke up being…
This week I did my first ever Twitch stream, hosted by my book publisher. I had fun doing it and now look forward to streaming more in my own channel. Without Manning I certainly wouldn’t consider streaming, so thank you for hosting me.
In the stream I did a 2-hour long programming session in which I implemented a minimal water wave simulator that’s the running example in the book. I just uploaded the code here — it’s cleaned up, commented, and includes a few bug fixes that I missed during the stream.
Also on milancurcic.com
Fortran has an interesting historic feature called implicit typing: Undeclared variables whose name begins with letters i, j, k, l, m, or n are implied to be integers, and real otherwise. For example, this is a valid Fortran program that prints a square of first five positive integers:
do i = 1, 5 ! i is implied integer
x = i**2 ! x is implied real
print *, x
While there aren’t any variable declarations here, both
x have a well defined type. The output?
Also on milancurcic.com
Everybody’s life path is steered by series of seemingly strange coincidences. Like weather, human lives are chaotic and unpredictable. By chaotic, I don’t mean disorderly and in disarray, but rather that small changes at one time can lead to large changes down the road.
I think about what gets me to make certain turns and decisions in life. For example, co-founding Cloudrun with my friend Josh. What brought me here? …
Cloudrun serves a diverse set of customers, from academic researchers and meteorology consultants to energy forecasters and competitive sailors. While some users are technologically savvy, they’re typically not expert modelers and don’t know all the necessary ingredients of a successful weather simulation. As the core product of Cloudrun is custom and on-demand numerical weather prediction, it’s essential that it just works, no matter the configuration the user chooses.
This is much harder than it seems. Models are complex — the most ubiquitous weather model (WRF) is about a million lines of code, and can be set up in millions of…
I’m a scientist, founder, and author.