It really *is* FORTRAN, all the way down

Two weeks ago I learned something that completely shifted what I thought I knew, and which seems to not be widely known. Thanks to Mike Croucher (Walking Randomly), whose blog I have followed as long as I can remember following blogs.

Did you know that programming languages are built on other programming languages? It should have been self-evident, perhaps, but I never really gave a thought to where programming languages actually come from. Second; did you know that large portions of Python and R are built on, and dependent on, FORTRAN?! (yes, I know its name is supposed to be part lowercase nowadays, but in my mind it remains FORTRAN77, like my student days – no, I am not ancient, but my teachers’ tools were).

The reason I blog this now is: I mentioned this the other day to an old friend who is a real bona fide computer scientist and researcher, and he DIDN’T know.

And as MC tells it, “Much of the numerical functionality we routinely use today was developed decades ago and released in Fortran. More modern systems, such as R, make direct use of a lot of this code because it is highly performant and, perhaps more importantly, has been battle tested in production for decades.  Numerical computing is hard (even when all of your instincts suggest otherwise) and when someone demonstrably does it right, it makes good sense to reuse rather than reinvent. As a result, with no Fortran, there’s no R.

And yeah, the same goes for Python, and a lot of other really basic (meaning not ‘simple’, but fundamental) numeric tools that are used everywhere. At least one of SciPy and NumPy has been a part of every Python toolset I have tried so far.

So what is the problem with many of our most indispensable software tools having a well-optimized FORTRAN skeleton? Compilers are the issue – the tailormade ways you tell the *really* basic low level parts of your specific processor what to do with your code. And processors are different. Hence, FORTRAN has over a dozen open source and commercial compilers adapted to different brands of processors – and for the commercial ones you have to trust that the organization that owns the compiler wants to continue supporting it. The currently most recommended compiler is commercial. However, open source efforts seem to have kept in step, more or less – though there are/were some question marks on whether everything FORTRAN-dependent would work well on Apple’s new Arm-based ‘Apple Silicon’ machines. (Imagine getting a shiny new expensive Apple computer – heavily marketed to people with rather vague knowledge of technical aspects – and everything goes wonky? The uproar.)

So, in essence, many modern open source computing resources rest on weaker legs than is really comfortable. It reminds me of that fantastic XKCD on dependencies. (There really is an XKCD for every tech scenario imaginable)

Ad-hoc guide to tweeting as an org

This was triggered by a request on Twitter, on guides/guidelines for tweeting as an institution. I scrambled through my mental inventory and came up blank. Then I figured that hey, I’ve done that for 11+ years, I might actually have some recommendations…

So, points to think of, off my head: 

1) Sort accounts into lists that make sense (e.g. members/staff, non-members, org accounts, relevant news sources)

2) Set a policy for each list on likes and retweets

3) If there are several tweeters, put their username in the org account description and have each sign their replies, if any, with their name/username

4) Have a policy for how you treat tweets from outside accounts. I tend to retweet a lot of community stuff and community-relevant stuff. That kind of behavior leads to a rather errant-looking timeline…

… which might not be what you want, if you assume people are reading your account in timeline view (I don’t think many do this, but maybe you want to display recent tweets on your webpage or some such)

5) Ping community members if you tweet stuff you know to be relevant to them. But it has to be very relevant to merit a ping, and not done too often

6) Hashtags are your friends, as an org. Try to have one for each relevant thing you communicate regularly; and don’t be shy to pick up a tweet, put it in retweet mode and just add a (community relevant) hashtag for visibility

7) Set up a best practices doc, even if you are the lone tweeter. There is some value in making your thinking explicit on a page, it usually clarifies things and helps you stay consistent. Also, onboarding new same-account tweeters gets WAY easier if you start with some common ground established

This post was originally a Twitter thread in response to a question from Hannah/@story645:

Jag återpublicerar

Ett av syftena med den här ny(gamla) bloggen är att samla sådant jag har skrivit på andra ställen, som kanske inte kommer finnas för alltid.

Jag håller på att importera gamla bloggar och annat skrivet hit, och märka upp så att det syns var de kommer ifrån.

Vetenskapsnytt, -2019.
Matmolekyler, 2007-2017.
Gästblogg hos Tidningen Curie, sommaren 2014.