<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>De Programmatica Ipsum</title><link>https://deprogrammaticaipsum.com/</link><description>Recent content on De Programmatica Ipsum</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 07 Sep 2026 05:03:00 +0200</lastBuildDate><atom:link href="https://deprogrammaticaipsum.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Issue 096: Software Factories</title><link>https://deprogrammaticaipsum.com/issue-96-software-factories/</link><pubDate>Mon, 07 Sep 2026 05:03:00 +0200</pubDate><guid>https://deprogrammaticaipsum.com/issue-96-software-factories/</guid><description><![CDATA[ <p>Welcome to the 96th issue of <em>De Programmatica Ipsum</em>, about <em>Software Factories</em>.</p>
<p>In this edition:</p>
<ul>
<li>Graham makes us realize that <a href="/fully-automated-luxury-communistical-software-factories/">you cannot get rid of programmers</a>.</li>
<li>Adrian is dismayed reviewing <a href="/on-the-illusion-of-control/">the history of Software Factories</a>.</li>
<li>In our <a href="/category/videotheque/">Vidéothèque section</a>, we listen to <a href="/damon-edwards/">Damon Edwards</a> tell us the story of how the DevOps movement got started.</li>
<li>In the <a href="/category/library/">Library section</a>, we review <a href="/anneke-kleppe-jos-warmer-wim-bast-ivar-jacobson-pan-wei-ng/">&ldquo;MDA Explained&rdquo;, &ldquo;Aspect-Oriented Software Development with Use Cases&rdquo;</a>, and <a href="/don-batory/">&ldquo;Science of Software Product Lines&rdquo;</a>.</li>
</ul>
<p>Download this issue in DRM-free <a href="/pdf/issue-096-software-factories.pdf">PDF</a> or <a href="/epub/issue-096-software-factories.epub">EPUB</a> format, and read it on your preferred device. You can also subscribe to <a href="/index.xml">our RSS feed</a>, featuring the full content of our articles.</p>]]></description><content:encoded><![CDATA[ <p>Welcome to the 96th issue of <em>De Programmatica Ipsum</em>, about <em>Software Factories</em>.</p>
<p>In this edition:</p>
<ul>
<li>Graham makes us realize that <a href="/fully-automated-luxury-communistical-software-factories/">you cannot get rid of programmers</a>.</li>
<li>Adrian is dismayed reviewing <a href="/on-the-illusion-of-control/">the history of Software Factories</a>.</li>
<li>In our <a href="/category/videotheque/">Vidéothèque section</a>, we listen to <a href="/damon-edwards/">Damon Edwards</a> tell us the story of how the DevOps movement got started.</li>
<li>In the <a href="/category/library/">Library section</a>, we review <a href="/anneke-kleppe-jos-warmer-wim-bast-ivar-jacobson-pan-wei-ng/">&ldquo;MDA Explained&rdquo;, &ldquo;Aspect-Oriented Software Development with Use Cases&rdquo;</a>, and <a href="/don-batory/">&ldquo;Science of Software Product Lines&rdquo;</a>.</li>
</ul>
<p>Download this issue in DRM-free <a href="/pdf/issue-096-software-factories.pdf">PDF</a> or <a href="/epub/issue-096-software-factories.epub">EPUB</a> format, and read it on your preferred device. You can also subscribe to <a href="/index.xml">our RSS feed</a>, featuring the full content of our articles.</p>
<p>This issue closes the 8th <a href="/volumes/">volume</a> of this magazine, also available as DRM-free <a href="/pdf/volume-08-2025-2026.pdf">PDF</a> and <a href="/epub/volume-08-2025-2026.epub">EPUB</a> files.</p>
<p>We would like to thank our patrons who generously contribute every month (or have contributed in the past) to our work and help us run this magazine. Thank you so much! In alphabetical order: Adam Guest, Adrian Tineo Cabello, Benjamin Sheldon, Christopher Nascone, Colin Powell, Franz Lucien Moersdorf, Guillermo Ramos Álvarez, Jean-Paul de Vooght, Dr. Juande Santander-Vela, Patryk Matuszewski, Paul Hudson, Quico Moya, Roger Turner, Szymon Licau, and countless more leaving anonymous tips every month.</p>
<p>Enjoy this issue! Please share our articles on social media, or <a href="/contribute/">contribute</a> if you would like to support our work with a donation via <a href="https://liberapay.com/akosma/donate">Liberapay</a>.</p>
<p>Cover photo by <a href="https://unsplash.com/@m_simpsan?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Alex Simpson</a> on <a href="https://unsplash.com/photos/gray-and-red-factory-building-under-a-calm-blue-sky-9GwMIek9jnY?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</p>
]]></content:encoded></item><item><title>Fully Automated Luxury Communistical Software Factories</title><link>https://deprogrammaticaipsum.com/fully-automated-luxury-communistical-software-factories/</link><pubDate>Mon, 07 Sep 2026 05:02:02 +0200</pubDate><guid>https://deprogrammaticaipsum.com/fully-automated-luxury-communistical-software-factories/</guid><description> &lt;p>Almost since the dawn of programming (certainly since before the &lt;a href="https://dl.acm.org/doi/10.5555/1102021">1969 NATO Science Committee conference on software engineering techniques&lt;/a>), software managers have been looking for ways to create programs without relying on programmers. In addition to being expensive to hire (at least if you are not asking about salaries in the direct aftermath of 1970s energy crisis, the dot-com crash, the Great Recession, or the post-COVID layoffs bubble), programmers have a habit of doing the wrong thing.&lt;/p></description><content:encoded><![CDATA[ <p>Almost since the dawn of programming (certainly since before the <a href="https://dl.acm.org/doi/10.5555/1102021">1969 NATO Science Committee conference on software engineering techniques</a>), software managers have been looking for ways to create programs without relying on programmers. In addition to being expensive to hire (at least if you are not asking about salaries in the direct aftermath of 1970s energy crisis, the dot-com crash, the Great Recession, or the post-COVID layoffs bubble), programmers have a habit of doing the wrong thing.</p>
<p>To quote from the aforementioned report, conference attendee Jules Schwartz says &ldquo;Programmers must be controlled, so that they don’t invent beyond the requirements which are assigned to them.&rdquo; This is such a big problem, that the software engineering memeplex has phrases that describe both its occurrence (<a href="https://blog.codinghorror.com/gold-plating/">&ldquo;Gold-Plating&rdquo;</a>) and its avoidance (<a href="https://martinfowler.com/bliki/Yagni.html">&ldquo;You Aren&rsquo;t Gonna Need It&rdquo;</a> or &ldquo;YAGNI&rdquo;); the latter being a technique that rightfully <a href="http://www.extremeprogramming.org/">got labeled &ldquo;Extreme&rdquo;</a> on its introduction.</p>
<p>In both theory and in practice, you do not need programmers to write programs. Once you have a description of your system&rsquo;s capabilities and design, you can automatically generate a program that does what you need. No programmer to create features you do not need; to turn a quick design tweak into a general data-driven layout engine; to rewrite the whole application using a technique they just read about in a Yourdon Press book.</p>
<p>In practice, this approach has drawbacks. Firstly, the implementation that you mechanically derive from a specification probably is not optimised for your target platform; it does not use design idioms from that platform&rsquo;s UI, it does not use all of the hardware facilities available, and so on. You either tweak the implementation for the platform (by hiring programmers), or you optimise the compiler for the platform (by hiring programmers). Ugh. Programmers.</p>
<p>Secondly, a specification that is precise enough to turn directly into a functional implementation has many of the features of a computer program anyway. You know who can work with computer programs? Ugh, that is right. Programmers.</p>
<p>So through a combination of coercion—managers weaponised Agile, throwing so many tasks into each short iteration that there is no time for gold-plating—and compromise—programmers stopped reading books about programming—programmers and managers reached an uneasy truce. Programmers would (mostly) only write the software that their employers needed (or pretend to, with gold-plating saved for &ldquo;corporate open source&rdquo;), in return for which managers would (mostly) tolerate the programmers&rsquo; continued presence (or pretend to, until the next software factory hype cycle).</p>
<p>But now, everything has changed. Now we have a new magic pixie dust we can sprinkle over our projects to make everything beautiful and to get rid of those pesky programmers: AI. Does AI now succeed where computer-aided software engineering (CASE) failed? Can we make a software factory out of LLMs?</p>
<p>Yes, and no. Firstly, I will quickly dismiss the idea that Spec-Driven Development takes us back to the CASE days. This is quick to do because I already made <a href="https://youtu.be/wLCZ3hKv69U">a video on it</a>.</p>
<p>But a software factory is a specific kind of CASE product, and a specific application of specification to the software world. It is a collection of pre-made components, with templates and recipes that an implementor can use to adapt it on to their specific problem. That kind of thing is so much in the wheelhouse of an LLM-based coding assistant that there are two different technical ways to solve the problem.</p>
<p>A software factory vendor could package their factory as an <a href="https://agentskills.io/home">Agent Skill</a>. The SKILL.md file tells the LLM how the software factory is structured, and what to do. Recipes/playbooks are scripts in the scripts/ folder that the LLM runs to fulfil certain tasks. Pre-made components and templates are in the assets/ folder, and documentation, of course, goes in documentation/. To build an instance of the factory software, invoke the skill.</p>
<p>But they could also deliver it as an <a href="https://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro">MCP server</a>. This time, the recipes and playbooks are tools that the LLM uses, and the components, templates, and documentation are resources that the server makes available to the LLM. The server also shares prompts over MCP, providing the same templated interaction with the coding assistant that an Agent Skill would.</p>
<p>Now would this work? Yes, of course it would. The real question is: who would make it work? Who understands how to tweak the factory&rsquo;s output to meet the specific demands of the organisation? Who knows how to integrate it into the existing system? Who knows how to tailor the configurable components to suit the goals of the specific system you are building? Who knows how to fix problems when the LLM does not quite generate the correct code? Ugh, that is right. Programmers.</p>
<p>Cover photo by <a href="https://unsplash.com/@npi?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Pavel Neznanov</a> on <a href="https://unsplash.com/photos/white-concrete-building-with-red-star-flag-Q-XNyse0X20?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</p>
]]></content:encoded></item><item><title>On The Illusion Of Control</title><link>https://deprogrammaticaipsum.com/on-the-illusion-of-control/</link><pubDate>Mon, 07 Sep 2026 05:02:01 +0200</pubDate><guid>https://deprogrammaticaipsum.com/on-the-illusion-of-control/</guid><description><![CDATA[ <p>One of the oldest and wettest dreams of managers since the invention of the computer has been that of getting rid of that pesky layer of human programmers in their organizations. A lot has been written about the <a href="/gerald-weinberg/">psychology</a> of programmers, about how to deal with them <a href="/tom-demarco-timothy-lister/">as human beings</a>, and about how the dialog between managers and programmers <a href="/the-impossible-dialogue/">is broken</a>. Evidence shows that neither developers nor managers are interested in knowing how to deal with one another, and hence, managers have tried again and again to promote themselves into a programmer-free world.</p>]]></description><content:encoded><![CDATA[ <p>One of the oldest and wettest dreams of managers since the invention of the computer has been that of getting rid of that pesky layer of human programmers in their organizations. A lot has been written about the <a href="/gerald-weinberg/">psychology</a> of programmers, about how to deal with them <a href="/tom-demarco-timothy-lister/">as human beings</a>, and about how the dialog between managers and programmers <a href="/the-impossible-dialogue/">is broken</a>. Evidence shows that neither developers nor managers are interested in knowing how to deal with one another, and hence, managers have tried again and again to promote themselves into a programmer-free world.</p>
<p>Of course, this has not happened yet, and it will not likely happen anytime soon.</p>
<p>But to learn the history of programming is to see that every major advance in the field was driven by the quite explicit aim of getting rid of those programmers altogether, in one way or another, and to achieve a degree of control over the quality of the final product.</p>
<p>It is safe to say that such control is an illusion, as all control is.</p>
<p>Let us enumerate some famous examples of technologies that promised to bring some kind of control into the process of programming, or at least to free it from the all-powerful hand of programmers: <a href="/issue/issue-095-fortran/">FORTRAN</a> and COBOL in the 1960s; <a href="/edward-nash-yourdon/">structured programming</a> and <a href="/the-og-low-code-platform/">spreadsheets</a> in the 1970s; <a href="/the-hype-cycle-of-oop/">object-oriented programming</a> and <a href="https://en.wikipedia.org/wiki/Computer-aided_software_engineering">CASE tools</a> in the 1980s; <a href="/the-gang-of-four/">design patterns</a> and <a href="/the-three-amigos-among-others/">UML</a> in the 1990s; <a href="https://en.wikipedia.org/wiki/Model-driven_architecture">Model-Driven Architecture</a> and <a href="/kent-beck/">TDD</a> in the 2000s; <a href="/antonomasia/">DevOps</a> and <a href="/enough-agile/">Agile</a> in the 2010s; and the latest fad, <a href="https://factory.strongdm.ai/">Agentic AI</a> via <del>statistical bullshit machines</del> LLMs, in the troubled 2020s during which these words are being poured.</p>
<p>Given all of these efforts, one would think that software in 2026 would be a flawless product of the human mind, a perfect contraption, reliable in its feature set, and easily maintainable by the teams in charge. Built with safety and usability in mind, with respect for privacy and ecology concerns, and even with aesthetic considerations. Would that not be a safe assumption? Have we not been building software for over 65 years at this point?</p>
<p>(This author will wait for the reader of these lines to stop laughing uncontrollably.)</p>
<p>Of course not. Quite the opposite. If anything, software has bloated to the point where all the common sense that could be safely thrown out of the window has suffered precisely that fate, where every new wave of hype takes the industry into yet another roller coaster tour and where all rationality has long ago left the building.</p>
<p>No wonder many of us are seriously thinking of raising sheep in the Kerguelen Islands, as far away as possible from any software or human beings, for that matter.</p>
<p>(Catches breath.)</p>
<p>The idea of &ldquo;software factories&rdquo; is not new, and as many things in our industry, it was an <a href="/think/">IBM</a> engineer who came up with it: <a href="https://en.wikipedia.org/wiki/Bob_Bemer">Bob Bemer</a>, one of the original designers of COBOL and ASCII. He published a paper titled <a href="https://web.archive.org/web/20010406041743/http://www.bobbemer.com/FACTORY.HTM">&ldquo;The Economics of Program Production&rdquo;</a> in <em>annus mirabilis</em> 1968, in which he described the idea of a software factory, outlining three clear goals:</p>
<blockquote>
<p>a. Maximizing programmer effectiveness and personnel resources. <br>
b. Minimizing time and costs for original production, changes and checkout. <br>
c. Maintaining the best-conditioned system from a quality viewpoint.</p>
</blockquote>
<p>Generation after generation of programming team managers have been trying to optimize these three variables by whichever means required. Developers, like Schrödinger cats aware of the fact that they are in a box with a lethal isotope next to them, have time and again silently boycotted these efforts (for better or for worse), and the resulting patchwork of technologies and approaches has had an effect akin to that of <a href="https://en.wikipedia.org/wiki/Scientific_management">Taylorism</a> in our field.</p>
<p>Precisely, this author made a painful comparison in this magazine <a href="/divide-et-impera/">almost 5 years ago</a>:</p>
<blockquote>
<p>Software workers are the new factory workers of the 21st century; a group of workers whose obesity, deafness induced by earphones worn in noisy open spaces, and carpal tunnel syndrome, are all visual marks of stress and abuse. The invisible ones having mental health issues; burnout, harassment, depression, all conveniently ignored by insurances, managers, and other board members.</p>
</blockquote>
<p>And in this new age of LLMs and <a href="https://simonwillison.net/2026/Feb/7/software-factory/">Agents</a>, they are also the ones that are conveniently laid off, for the sake of efficiency… and also to raise the market price of the stocks of their respective companies. Those CEOs could always use yet another yacht, after all.</p>
<p>Eliezer Talon, in a discussion about yet another modern software factory concept called the &ldquo;pull request&rdquo;, <a href="https://elitalon.com/2026/07/27/are-pull-requests-good-for-your-team/">wrote</a> that</p>
<blockquote>
<p>The problem is that software development organisations are not assembly lines. Most of the effort goes into understanding the problem, validating assumptions, and adapting when we discover we were wrong. Those activities benefit from collaboration rather than isolation.</p>
</blockquote>
<p>Bingo. Somehow, even in the age of LLMs, programmers still have a job; if anything, at least to check that the output of those chatbots <a href="/banning-adopting-reckoning/">makes any sense</a> whatsoever. This raises another crucial question, quite uncomfortable for many, about how to <a href="/issue/issue-075-teaching-programming/">train</a> future generations of programmers to have precisely the skills required to distinguish the wheat from the chaff.</p>
<p>As an old man screaming to a cloud, this author thinks that we could still bring a sense of ethics in our future generations of programmers and software engineers, instead of teaching them yet again how to fool an AI interview process to get a job. I thus hope for a management style where control is neither the carrot nor the stick but a healthy consequence of a well-working dialogue between managers and programmers. Maybe it is not too late to dream of that.</p>
<p>Or perhaps, as usual, I am just being too idealistic.</p>
<p>Cover photo by <a href="https://unsplash.com/@steve_j?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Steve A Johnson</a> on <a href="https://unsplash.com/photos/a-couple-of-people-standing-on-top-of-a-striped-floor-GJHT7OGhVBE?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</p>
]]></content:encoded></item><item><title>Damon Edwards</title><link>https://deprogrammaticaipsum.com/damon-edwards/</link><pubDate>Mon, 07 Sep 2026 05:01:01 +0200</pubDate><guid>https://deprogrammaticaipsum.com/damon-edwards/</guid><description><![CDATA[ <p>DevOps is, by far, the closest thing we have to a software factory at the time of this writing. We had dedicated a whole issue to DevOps <a href="/issue/issue-016-devops/">in January 2020</a>, but this month&rsquo;s topic makes it a natural object of interest. The analogy goes so deep that even the word <em>&ldquo;pipeline&rdquo;</em> fits into the world of DevOps like a glove.</p>]]></description><content:encoded><![CDATA[ <p>DevOps is, by far, the closest thing we have to a software factory at the time of this writing. We had dedicated a whole issue to DevOps <a href="/issue/issue-016-devops/">in January 2020</a>, but this month&rsquo;s topic makes it a natural object of interest. The analogy goes so deep that even the word <em>&ldquo;pipeline&rdquo;</em> fits into the world of DevOps like a glove.</p>
<p>Hence, this month&rsquo;s Vidéothèque entry is <a href="https://www.youtube.com/watch?v=o7-IuYS0iSE">&ldquo;The (Short) History of DevOps&rdquo;</a> by Damon Edwards, a 12-minute video published in September 2012, explaining the early memories of DevOps and how it evolved from 2009 to then. Pay attention to the release date of this video: we are talking about DevOps before Terraform, Docker containers, or Kubernetes.</p>
<p>The video explores the origins and evolution of the DevOps movement, documenting how it transitioned from a niche frustration into a globally recognized IT buzzword. Damon aims to clarify the often-misunderstood roots of DevOps, highlighting key individuals, conferences, and community efforts that shaped its decentralized development. The most important part here is to understand that no individual vendor took part in the creation of DevOps; this is quite an important point.</p>
<p>So the history begins in 2007 in Belgium with a certain <a href="https://www.jedi.be/">Patrick Debois</a>, who experienced deep frustration at his job (we can all relate to him here) due to the constant friction and conflicting workflows between agile development teams (&ldquo;Dev&rdquo;) and traditional operations (&ldquo;Ops&rdquo;) while working on a data center migration. This disconnect led to a pivotal moment at the Agile 2008 conference in Toronto, where <a href="https://www.profound-deming.com/profound-podcast/s4-e19-andrew-shafer-unpacking-devops-evolution-and-the-future-of-digital-transformation">Andrew Clay Shafer</a> proposed a session on &ldquo;agile infrastructure&rdquo; (minute <a href="https://www.youtube.com/watch?v=o7-IuYS0iSE&amp;t=94">01:34</a>) that nobody attended. Like, literally nobody, except for Patrick. Their resulting conversation spawned a Google group, but the true turning point occurred during the 2009 O&rsquo;Reilly&rsquo;s Velocity conference, when John Allspaw and Paul Hammond delivered a famous presentation on &ldquo;Dev and Ops cooperation&rdquo; at Flickr, as explained at minute <a href="https://www.youtube.com/watch?v=o7-IuYS0iSE&amp;t=183">03:03</a>.</p>
<p>Stuff went fast from that point. Inspired by the Velocity presentation, Patrick Debois organized a local gathering in Ghent, Belgium, in late 2009 to bring developers and systems administrators together, named &ldquo;DevOpsDays,&rdquo; a term that was quickly shortened to the hashtag &ldquo;#DevOps&rdquo; by attendees wanting to save character space on Twitter (minute <a href="https://www.youtube.com/watch?v=o7-IuYS0iSE&amp;t=282">04:42</a>). Somehow, this sparked a global community out of nowhere, leading to more face-to-face meetings in places like Australia and the United States and eventually causing the movement to cross the chasm into mainstream adoption.</p>
<p>In just 3 years, from 2009 to 2012, DevOps became the definitive software factory concept: a set of best practices and activities, mindsets, and (yes) rituals so that software could be put into production not just 2 times a year but potentially 20 times per hour, with better quality and less friction. Ah, the dream.</p>
<p>DevOps is, then, an experience-based, grassroots movement created by practitioners, for practitioners (minute <a href="https://www.youtube.com/watch?v=o7-IuYS0iSE&amp;t=561">09:21</a>). It was never designed as a rigid standard, a specific product, or a corporate job title imposed by vendors. Keep that in mind the next time you get to use the Azure DevOps Server console for your project. No, Microsoft did not come up with the name or the concept.</p>
<p>Watch &ldquo;The (Short) History of DevOps&rdquo; by Damon Edwards <a href="https://www.youtube.com/watch?v=o7-IuYS0iSE">on YouTube</a>.</p>
<p>Cover snapshot chosen by the author.</p>
]]></content:encoded></item><item><title>Don Batory</title><link>https://deprogrammaticaipsum.com/don-batory/</link><pubDate>Mon, 07 Sep 2026 05:00:02 +0200</pubDate><guid>https://deprogrammaticaipsum.com/don-batory/</guid><description> &lt;p>I guarantee you have used software that is the output of a Software Product Line. If you have got an Android phone, tablet, or audio player; use Linux on your desktop, laptop, set-top box, smart home device, Wi-fi router, server, or cloud computing provider; or you use a web application that is hosted on Linux, then you have used a Linux kernel. Not &lt;em>the&lt;/em> Linux kernel, as there are many Linux kernels.&lt;/p></description><content:encoded><![CDATA[ <p>I guarantee you have used software that is the output of a Software Product Line. If you have got an Android phone, tablet, or audio player; use Linux on your desktop, laptop, set-top box, smart home device, Wi-fi router, server, or cloud computing provider; or you use a web application that is hosted on Linux, then you have used a Linux kernel. Not <em>the</em> Linux kernel, as there are many Linux kernels.</p>
<p>When you build a Linux kernel (or someone builds it for you), an important step is configuring the build. The project uses a domain-specific language called <a href="https://docs.kernel.org/kbuild/kconfig-language.html">kconfig</a> to define various parameters and feature settings. You (or the person who does it for you) choose what features you want in the kernel, and what values you want for the other parameters, and those define the way that the build system builds <em>a</em> (not <em>the</em>) Linux kernel for you. The kernel build system is a factory, Linux is a software product line, and the specific Linux kernel you build is a product in the product line.</p>
<p>Or, as <a href="https://en.wikipedia.org/wiki/Don_Batory">Don Batory</a> points out in the important, if somewhat idiosyncratically written, <em>&ldquo;Science of Software Product Lines&rdquo;</em>, the output of kconfig is the Linux kernel you <em>might</em> build, <em>if you get lucky</em>. 87% of the configurations you can create using kconfig result in a product that does not even compile. Clearly Linus Torvalds needs to read this book.</p>
<p>Much of the time, software designers think about features and about codebases as orthogonal concerns. Yes, &ldquo;the business&rdquo; wants me to add a feature to the code, so what I am going to do is to read the code and work out some changes to make that I think integrate the feature into the existing <del>ball of mud</del> architecture. OK, maybe they want me to soft-launch the UI behind a feature flag, so I will find some places where I can put <code>if(featureIsEnabled)</code> into the code so that the feature gets turned on when the flag is set.</p>
<p>Technically, that product with the feature flags in <em>is really</em> a software product line. Each person gets their own version of the product determined at runtime, based on the state of the collection of feature flags defined for that person. But, like the Linux kernel, the creators of that feature-flag-rich app have not read <em>&ldquo;Science of Software Product Lines&rdquo;</em>, so they are not getting the full benefit of decades of research in the area.</p>
<p>Those of us with long memories—or who still build venerable GNU projects like Emacs or GCC from source—remember the &ldquo;fun&rdquo; to be had with the GNU autotools, specifically <a href="https://www.gnu.org/software/autoconf/">GNU autoconf</a> and <a href="https://www.gnu.org/software/automake/">GNU automake</a>. The concept was simple: you could make your software both portable, and flexible, by defining macros that configure build settings and enable or disable features. In fact, and perhaps surprisingly, it did not work like that at all. What it did was to inspect the target system and the options someone used to run the script, and define a collection of configuration points that instruct the build system to create different products, with distinct feature sets and internal behaviour. Yes, that is right, a GNU autoconf build system defines a software product line, and none of us had read Don&rsquo;s book, either. How could we? It was published in 2026.</p>
<p>The typical way that autotools projects configure a software product line is to provide C preprocessor macros that the compiler uses to conditionally include or exclude feature code, switch implementations of routines, or set concrete values for abstract ideas, like the size of a memory region. Batory shows us that the C preprocessor (CPP) is one of the most powerful and capable tools available for creating software product lines—and also one of the most dangerous, as its text-substitution approach readily leaves code in an uncompilable state, particularly when features compose in unexpected ways (hence the dice roll every time you try to configure the Linux kernel). This mess is to the compiler what <a href="https://dl.acm.org/doi/abs/10.1109/MAHC.2018.2877913">DLL Hell</a> is to the runtime environment.</p>
<p>His book shows the theory behind slicing software by feature, and composing the code fragments that add features, and the second-level code fragments that ensure two features play nicely when they are both selected. He shows that a feature map is the space of all possible software products that a software product line produces, and that it is finite, even if potentially humungous; the Linux kernel SPL has far more possible configurations than the number of particles in the universe (when I worked at Facebook in 2014, so did the set of feature flags in their mobile apps).</p>
<p>He shows practical tools, like the <a href="https://dl.acm.org/doi/10.1145/3109729.3109750">X15 refactoring engine</a> that uses Java annotations to build and transform SPLs in semantically valid ways. He demonstrates how object-oriented modelling can yield flexible designs that are amenable to supporting SPLs; including novel OO capabilities as in the <a href="https://beta.cs.au.dk">BETA programming language</a>. BETA is similar to the SIMULA language, but inheritance runs in the opposite way than you are used to. A parent class can inherit behaviour from its subclasses, and include instructions in its method definitions that tell the runtime to invoke the subclass&rsquo;s implementation of the method. It is no surprise that OOP is a great technique for building SPLs from components, given that <a href="/brad-cox">Brad Cox</a> showed us how to do this with Software ICs, and how to monetise it with Superdistribution.</p>
<p>By far the most interesting chapter is towards the end, where Batory lists open challenges in SPL research with their complexity, reading like the higher-difficulty &ldquo;exercises&rdquo; in <a href="/the-art-of-the-art-of-computer-programming/">&ldquo;The Art of Computer Programming&rdquo;</a>. These range from the most modern of 2026 challenges (how to work with SPLs in the LLM era) to the most basic and surprising of fundamental knowledge gaps: nobody has ever provided a scientific basis for believing that modularity is beneficial in software design. Even the most worthy of luminaries, Edsger Dijkstra, axiomatically accepts &ldquo;the separation of concerns&rdquo; as a good idea, as if its alternative is something that should be <a href="/harmfully-considered/">considered harmful</a> with no further thought. This, ironically, in a paper called <a href="https://www.cs.utexas.edu/~EWD/ewd04xx/EWD447.PDF">&ldquo;On the role of scientific thought&rdquo;</a>!</p>
<p>Cover photo by the author.</p>
]]></content:encoded></item><item><title>Anneke Kleppe, Jos Warmer, Wim Bast, Ivar Jacobson, &amp; Pan-Wei Ng</title><link>https://deprogrammaticaipsum.com/anneke-kleppe-jos-warmer-wim-bast-ivar-jacobson-pan-wei-ng/</link><pubDate>Mon, 07 Sep 2026 05:00:01 +0200</pubDate><guid>https://deprogrammaticaipsum.com/anneke-kleppe-jos-warmer-wim-bast-ivar-jacobson-pan-wei-ng/</guid><description> &lt;p>The library of a programmer who has been in the craft for a few decades is a wonderful thing. Although the consumption patterns have somewhat shifted from paper to electronic books, there is always room on their shelf for those forgotten books that represent ideas from another age. This Library entry is just a reminder that those ideas had some value and were interesting in their own, even if the market itself decided otherwise.&lt;/p></description><content:encoded><![CDATA[ <p>The library of a programmer who has been in the craft for a few decades is a wonderful thing. Although the consumption patterns have somewhat shifted from paper to electronic books, there is always room on their shelf for those forgotten books that represent ideas from another age. This Library entry is just a reminder that those ideas had some value and were interesting in their own, even if the market itself decided otherwise.</p>
<p>Case in point: <a href="https://www.oreilly.com/library/view/mda-explained-the/032119442X/pr06.html">&ldquo;MDA Explained&rdquo;</a> (2003) by Anneke Kleppe, Jos Warmer, and Wim Bast; and <a href="https://www.oreilly.com/library/view/aspect-oriented-software-development/0321268881/">&ldquo;Aspect-Oriented Software Development with Use Cases&rdquo;</a> (2005) by Ivar Jacobson and Pan-Wei Ng. Understandably, neither title will immediately make sense to those faithful readers of this magazine; both are, however, connected to the subject of this month, that is, software factories, and are, of course, connected to the renowned &ldquo;Booch-Jacobson-Rumbaugh&rdquo; series of books published by Addison-Wesley at the turn of the century.</p>
<p>First, a bit of background. Unlike many other professions, software engineers are usually requested to participate in activities that are explicitly designed to destroy their profession. In the case of the author of these lines, I was working at a major European consultancy company that wanted to standardize the production of J2EE and .NET applications to the maximum possible extent, thus creating one of those mythical &ldquo;software factories&rdquo; management gurus had been touting to everyone back in the day. Doing so in 2005 meant, invariably, diving into the world of <a href="https://en.wikipedia.org/wiki/Model-driven_architecture">&ldquo;Model-Driven Architecture&rdquo;</a>.</p>
<p>This moniker describes a set of procedures by which architects would be able to design a system completely… just through UML diagrams, or &ldquo;models&rdquo; of some kind. Please stay with me. The whole idea being that, with the correct set of use-case, sequence, state, and class diagrams, defined following some very complex and standardized &ldquo;metamodel&rdquo; (whatever that was), a translation system would be able to generate the code for a J2EE or a .NET application, or potentially any other language, thus increasing the output of the whole consulting organization, being able to reuse and standardize knowledge across teams, reducing development times, and reaping who knows how many other benefits.</p>
<p>Dare I say that this never worked? Of course it did not. To begin with, the entire idea disappeared because of the lack of involvement of big names in the industry. Neither Sun Microsystems (the inventors of Java, before being gobbled by Oracle) nor Microsoft (who were very happily selling Visual Studio licenses all over the world) seriously considered the possibility of switching from code to diagrams. No other (major) vendor jumped onto this train, ever.</p>
<p>Another problem of the approach was that code has a granularity that a diagram cannot provide, no matter how carefully those sequence diagrams would define the, well, sequence of method calls between objects. Code might be the exception to the rule that says that &ldquo;an image is worth a thousand words&rdquo;; a diagram was simply not worth a thousand lines of code.</p>
<p>So that left the Object Management Group (the organization in charge of the standardization of UML, with the somewhat unfortunate acronym &ldquo;OMG&rdquo;) struggling to find support, and by 2010 the whole idea of MDA had disappeared altogether, at least from the perspective of this software developer. I have never heard it implemented anywhere, and other hype factors (mobile, the Cloud, DevOps) took over the imagination of developers.</p>
<p>On the other hand, we have <a href="https://en.wikipedia.org/wiki/Aspect-oriented_programming">Aspect-Oriented Programming</a>. This was yet another major buzzword in the early 2000s, proposing yet another paradigm to separate code elements and to reduce duplication in code. And yes, apart from some very specific use cases and from some very specific platforms that somehow supported it, AOP never really took off as a major approach in the industry. Not even after all of Jacobson&rsquo;s and Ng&rsquo;s efforts to teach us how to use Use Case diagrams to model such interactions.</p>
<p>Both books represent valid, very commendable efforts to try to bring order to chaos. In this article we could mention the gazillion books and magazine articles written about &ldquo;CASE Tools&rdquo; in the late 1980s and so many other approaches that the industry has tried to bring software factories to life. But the stubborn reality is that, ironically enough, software is better made in workshops than in factories. Maybe it is time for the industry to realize that even in the age of LLMs and Agentic AI, programmers work better in small groups with a certain artisan feeling than in a big, impersonal factory (and this is true even if you use one of those continuous integration <em>pipelines</em> in it).</p>
<p>Meanwhile, kudos to you if you remember MDA and AOP in 2026, fellow old developer.</p>
<p>Cover photo by the author.</p>
]]></content:encoded></item><item><title>Issue 095: Fortran</title><link>https://deprogrammaticaipsum.com/issue-95-fortran/</link><pubDate>Mon, 03 Aug 2026 05:03:00 +0200</pubDate><guid>https://deprogrammaticaipsum.com/issue-95-fortran/</guid><description><![CDATA[ <p>Welcome to the 95th issue of <em>De Programmatica Ipsum</em>, about <em>Fortran</em>.</p>
<p>In this edition:</p>
<ul>
<li>Graham <a href="/immortal-elder-gods/">explains the wonders</a> of a programming language that has been able to adapt in an ever-changing world.</li>
<li>Adrian enumerates <a href="/the-fortran-multiverse-of-oblivion/">many of the wrong reasons</a> why FORTRAN/Fortran is not at the forefront of computing today.</li>
<li>In our <a href="/category/videotheque/">Vidéothèque section</a>, we watch &ldquo;The Beginnings of FORTRAN&rdquo;, a documentary featuring <a href="/john-backus/">John Backus</a> himself.</li>
<li>In the <a href="/category/library/">Library section</a>, we review &ldquo;Teach Yourself Computer Programming in FORTRAN&rdquo; by <a href="/arthur-s-radford/">Arthur S. Radford</a> and &ldquo;A FORTRAN Coloring Book&rdquo; by <a href="/roger-emanuel-kaufman/">Dr. Roger Emanuel Kaufman</a>.</li>
</ul>
<p>Download this issue in DRM-free <a href="/pdf/issue-095-fortran.pdf">PDF</a> or <a href="/epub/issue-095-fortran.epub">EPUB</a> format, and read it on your preferred device. You can also subscribe to <a href="/index.xml">our RSS feed</a>, featuring the full content of our articles.</p>]]></description><content:encoded><![CDATA[ <p>Welcome to the 95th issue of <em>De Programmatica Ipsum</em>, about <em>Fortran</em>.</p>
<p>In this edition:</p>
<ul>
<li>Graham <a href="/immortal-elder-gods/">explains the wonders</a> of a programming language that has been able to adapt in an ever-changing world.</li>
<li>Adrian enumerates <a href="/the-fortran-multiverse-of-oblivion/">many of the wrong reasons</a> why FORTRAN/Fortran is not at the forefront of computing today.</li>
<li>In our <a href="/category/videotheque/">Vidéothèque section</a>, we watch &ldquo;The Beginnings of FORTRAN&rdquo;, a documentary featuring <a href="/john-backus/">John Backus</a> himself.</li>
<li>In the <a href="/category/library/">Library section</a>, we review &ldquo;Teach Yourself Computer Programming in FORTRAN&rdquo; by <a href="/arthur-s-radford/">Arthur S. Radford</a> and &ldquo;A FORTRAN Coloring Book&rdquo; by <a href="/roger-emanuel-kaufman/">Dr. Roger Emanuel Kaufman</a>.</li>
</ul>
<p>Download this issue in DRM-free <a href="/pdf/issue-095-fortran.pdf">PDF</a> or <a href="/epub/issue-095-fortran.epub">EPUB</a> format, and read it on your preferred device. You can also subscribe to <a href="/index.xml">our RSS feed</a>, featuring the full content of our articles.</p>
<p>We would like to thank our patrons who generously contribute every month (or have contributed in the past) to our work and help us run this magazine. Thank you so much! In alphabetical order: Adam Guest, Adrian Tineo Cabello, Benjamin Sheldon, Christopher Nascone, Colin Powell, Franz Lucien Moersdorf, Guillermo Ramos Álvarez, Jean-Paul de Vooght, Dr. Juande Santander-Vela, Patryk Matuszewski, Paul Hudson, Quico Moya, Roger Turner, Szymon Licau, and countless more leaving anonymous tips every month.</p>
<p>Enjoy this issue! Please share our articles on social media, or <a href="/contribute/">contribute</a> if you would like to support our work with a donation via <a href="https://liberapay.com/akosma/donate">Liberapay</a>.</p>
<p>Cover photo by <a href="https://unsplash.com/@sammanns94?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Sam McNamara</a> on <a href="https://unsplash.com/photos/interior-view-of-car-HpxKvmjWPNM?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</p>
]]></content:encoded></item><item><title>Immortal Elder Gods</title><link>https://deprogrammaticaipsum.com/immortal-elder-gods/</link><pubDate>Mon, 03 Aug 2026 05:02:02 +0200</pubDate><guid>https://deprogrammaticaipsum.com/immortal-elder-gods/</guid><description><![CDATA[ <p>According to Geoffrey Cain&rsquo;s book <a href="https://geoffreycain.net/steve-jobs-in-exile/">&ldquo;Steve Jobs in Exile&rdquo;</a>, the titular entrepreneur told employees at his NeXT startup that were working on their first workstation that their platform would last maybe into the mid-1990s. All computing platforms rely on their app ecosystems to move them forwards, and some half-blessed, half-cursed platforms enable <a href="/issue-94-killer-apps/">killer apps</a> that help the platform reach the stratosphere. Eventually, the platform collapses under the weight of ensuring backwards compatibility with all of that software; it cannot move forwards because its existing customer base requires that nothing changes.</p>]]></description><content:encoded><![CDATA[ <p>According to Geoffrey Cain&rsquo;s book <a href="https://geoffreycain.net/steve-jobs-in-exile/">&ldquo;Steve Jobs in Exile&rdquo;</a>, the titular entrepreneur told employees at his NeXT startup that were working on their first workstation that their platform would last maybe into the mid-1990s. All computing platforms rely on their app ecosystems to move them forwards, and some half-blessed, half-cursed platforms enable <a href="/issue-94-killer-apps/">killer apps</a> that help the platform reach the stratosphere. Eventually, the platform collapses under the weight of ensuring backwards compatibility with all of that software; it cannot move forwards because its existing customer base requires that nothing changes.</p>
<p>He correctly identified an industry trend, but this is more due to leaky abstractions and poor design choices than any law of nature (in fact we have laws for evolving software systems, courtesy of <a href="https://en.wikipedia.org/wiki/Lehman%27s_laws_of_software_evolution">Manny Lehman</a>, and most of these laws were available to Steve). With sufficient investment, you can keep adapting your platform to the future, without disrupting your lucrative past.</p>
<p>So while the technologically-advanced Amiga ran out of steam when the custom chipset that leapt it ahead of its competitors in 1985 held it back in 1990, other vendors kept their platforms relevant through reinvention and sheer bloodyminded effort. It was only in November 2011 that Oracle Solaris 11 dropped compatibility for programs designed to run on Sun Microsystem&rsquo;s Solaris 1 (a.k.a. SunOS 4.1), which was released in 1991 and supported through 2003; Solaris 1 was a BSD UNIX and all subsequent versions were based on AT&amp;T&rsquo;s System V Release 4. Windows does a great job at compatibility with existing software, even after replatforming the PC version of the OS from MS-DOS to Windows NT. The Macintosh platform <a href="/eternally-finally/">goes</a> through bursts of emulating old variants while establishing new ones: PowerPC Macs ran m68k software; Mac OS X (briefly) ran &ldquo;Classic&rdquo; software; Intel Macs (briefly) ran PowerPC software; you are probably reading this at the tail end of ARM Macs (briefly) running Intel software.</p>
<p>Through all this churn, uncertainty for customers, and change in direction, some platforms have quietly plugged away, continuing to work just as well in the 2020s as they did in the 1950s. Literally. We are talking about the three living fossils of programming, perfectly adapted to their niches and thriving while other species come and go around them: 1958&rsquo;s LISP (which we covered in our <a href="https://deprogrammaticaipsum.com/guy-steele-gerry-sussman/">Functional Programming</a> issue); 1959&rsquo;s COBOL; and the oldest of them all, 1957&rsquo;s <span style="font-variant: small-caps;">Fortran</span>.</p>
<p>Yes, <span style="font-variant: small-caps;">Fortran</span> from that era is set in small caps, and we even use a nice font (Garamond) that shows the small-caps variant correctly. Developed as the &ldquo;IBM Mathematical Formula Translating System&rdquo;, the goal of <span style="font-variant: small-caps;">Fortran</span> was to produce a high-level language that made it easy to enter mathematical equations, and produce efficient compiled code that would be acceptable to programmers used to hand-carving assembler statements.</p>
<p>And boy, did people enter mathematical equations! If, at any point in the last few decades, you have taken a flight, or driven a car, or filled a car&rsquo;s fuel tank with petrol/gasoline or diesel, watched or read a weather forecast, taken medicine, bought something that is made of a modern material, or otherwise made use of the latest advances in science and engineering, you are a part of the great Fortran ecosystem (we can drop the small caps now, as the authors had to given the limited typographic capabilities of the <a href="/ken-ross-paul-laughton/">IBM 1401</a> mainframe machine).</p>
<p>Its longevity is due to its adaptability; FORTRAN 66 introduced library functions, for example, while FORTRAN 77 supported block statements and structured programming. Fortran 90 gave programmers access to lower-case letters (and thus set the name with only the capitalised initial F). Later updates add generic programming, object-oriented programming (even COBOL has this now) and concurrent programming. The irony of the statement from Steve Jobs that opened this article is that while his NeXTSTEP platform indeed came and went, people used NeXT computers to maintain Fortran software that predated the platform&rsquo;s introduction and that survives today, long after its disappearance.</p>
<p>Your humble author knows this because he is part of the story. One of my earlier jobs, if you skip my newspaper delivery and corner shop assistant phase, was managing a lab of NeXT machines in a physics department. Yes, we installed <code>gfortran</code>, and yes, the astrophysics researchers used them (along with much faster PCs running the upstart <a href="/issue-92-linux/">Linux</a> platform) to perform image analysis on data in the <a href="https://fits.gsfc.nasa.gov/fits_primer.html">FITS</a> image format. They did while the atmospheric physics folks were not running their fluid dynamics simulations, anyway. A lot of the code still followed the old FORTRAN layout rules, with line identifiers in the first 5 columns (unless the first column was <code>C</code> to indicate a comment).</p>
<p>Fast forward quite a lot of years, and I found myself helping to build a parallel debugger for high-performance computing (HPC) systems; in other words, thousands of Linux computers all connected together and running the same program at the same time. The answer to the question &ldquo;how do you expect me to debug this system, run the same <code>gdb</code> command on thousands of computers at the same time?&rdquo; is &ldquo;yes, exactly that, thank you&rdquo;. But you get a nice UI to drive <code>gdb</code>, and to graph the thousands of values you get back from every <code>p</code> command.</p>
<p>Of course, the software we were debugging (or helping others to debug) is overwhelmingly written in Fortran. Sure, some people switched to C++, and it is not <em>pure</em> Fortran, with a combination of non-Euclidean shell scripts and Python drivers setting up the core models, and some of the mathematical heavy lifting might be outsourced to CUDA these days, but so much cutting-edge science depends on Fortran that it is best to think of it as the modern, scientific language that always has been; a demonstration of what a computing ecosystem can be when it adapts with the times.</p>
<p>Cover photo by <a href="https://unsplash.com/@jkoblitz?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Julia Koblitz</a> on <a href="https://unsplash.com/photos/scientist-using-pipette-with-test-tubes-in-lab-RlOAwXt2fEA?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</p>
]]></content:encoded></item><item><title>The Fortran Multiverse Of Oblivion</title><link>https://deprogrammaticaipsum.com/the-fortran-multiverse-of-oblivion/</link><pubDate>Mon, 03 Aug 2026 05:02:01 +0200</pubDate><guid>https://deprogrammaticaipsum.com/the-fortran-multiverse-of-oblivion/</guid><description><![CDATA[ <p>On page 168 of the April 1988 issue of BYTE Magazine, <a href="https://archive.org/details/BYTE-MAGAZINE-COMPLETE/198804_Byte_Magazine_Vol_13-04_Memory_Management_-_24-pin_Printers/page/168/mode/2up">available online</a> courtesy of the extraordinary Internet Archive, we can read an article introducing &ldquo;two new compilers&rdquo; for the FORTRAN (still all in uppercase) programming language. On the other hand, page 736, section 10.5, titled &ldquo;Computer Languages&rdquo; of the 33rd edition of the quintessential <a href="https://en.wikipedia.org/wiki/CRC_Standard_Mathematical_Tables">&ldquo;CRC Standard Mathematical Tables and Formulas&rdquo;</a> by CRC Press (published in 2018), prefaced with the phrase &ldquo;Common computer languages used by scientists and engineers,&rdquo; does not even mention either FORTRAN or Fortran. What happened in those 30 years?</p>]]></description><content:encoded><![CDATA[ <p>On page 168 of the April 1988 issue of BYTE Magazine, <a href="https://archive.org/details/BYTE-MAGAZINE-COMPLETE/198804_Byte_Magazine_Vol_13-04_Memory_Management_-_24-pin_Printers/page/168/mode/2up">available online</a> courtesy of the extraordinary Internet Archive, we can read an article introducing &ldquo;two new compilers&rdquo; for the FORTRAN (still all in uppercase) programming language. On the other hand, page 736, section 10.5, titled &ldquo;Computer Languages&rdquo; of the 33rd edition of the quintessential <a href="https://en.wikipedia.org/wiki/CRC_Standard_Mathematical_Tables">&ldquo;CRC Standard Mathematical Tables and Formulas&rdquo;</a> by CRC Press (published in 2018), prefaced with the phrase &ldquo;Common computer languages used by scientists and engineers,&rdquo; does not even mention either FORTRAN or Fortran. What happened in those 30 years?</p>
<p>The truth is that <a href="https://fortran-lang.org/">Fortran</a> (in whatever spelling) was already on the way out when I started my career in IT, merely 9 years after the publication of the BYTE Magazine article mentioned above. Whatever happened, it was already underway in 1997. The times of <a href="https://web.archive.org/web/20191002193851/https://www.ibm.com/ibm/history/exhibits/builders/builders_backus.html">John Backus</a> creating the language <a href="https://www.ibm.com/history/fortran">at IBM</a> were a lonely, distant memory.</p>
<p>We could dive into the reasons why Fortran was pushed aside in the toolbox of most software programmers, but instead we are also going to imagine a world in which Fortran not only never faded away but instead remained a major player in the field. Why not? After all, and I recommend you do that, you can always use <code>apt</code>, <code>dnf</code>, or <code>pkg</code> to <a href="https://fortran-lang.org/en/learn/os_setup/install_gfortran/">install</a> one of the latest versions of <a href="https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-and-GCC.html">GNU</a> <a href="https://wg5-fortran.org/f2023.html">Fortran 2023</a> on your workstation, and you will discover a beautifully simple language, terribly fast, very modern, easy to write and read, and that is perfectly capable of doing anything you want (&ldquo;Turing-complete,&rdquo; remember?)</p>
<p>Fortran, against all odds, <em>is still there</em> after more than 70 years since the first program written with it ran on <a href="https://www.acm.org/education/otd-in-computing-history">September 20th, 1954</a>. In those pre-historic times, when mainframes roamed the Earth, variable names had a maximum limit of six characters, and variables holding integers <em>must</em> have a name starting with <code>I</code>, <code>J</code>, <code>K</code>, <code>L</code>, <code>M</code>, or <code>N</code>. Talk about <a href="https://en.wikipedia.org/wiki/Hungarian_notation">Hungarian notation</a>.</p>
<p>And it was more than that: it was actually the language of choice for Real Programmers™®©, as stated in a <a href="https://www.pbm.com/~lindahl/real.programmers.html">letter to the editor</a> published in the July 1983 issue of &ldquo;Datamation&rdquo; magazine:</p>
<blockquote>
<p>The easiest way to tell a Real Programmer from the crowd is by the programming language he (or she) uses. Real Programmers use Fortran. Quiche Eaters use Pascal. Nicklaus Wirth, the designer of Pascal, gave a talk once at which he was asked, &ldquo;How do you pronounce your name?&rdquo;. He replied, &ldquo;You can either call me by name, pronouncing it &lsquo;Veert&rsquo;, or call me by value, &lsquo;Worth&rsquo;.&rdquo; One can tell immediately by this comment that Nicklaus Wirth is a Quiche Eater.</p>
</blockquote>
<p>(I guess we should be thankful the author added &ldquo;or she&rdquo; to their description of Real Programmers.)</p>
<p>How little has the industry changed in 43 years? <em>Le sigh.</em> Where was I? Ah, yes, trends.</p>
<p>The first hype train that Fortran arguably missed was, let us be honest, <a href="/the-hype-cycle-of-oop/">object-oriented programming</a>. To be taken &ldquo;seriously&rdquo; in the 1980s, you needed to support objects, and there was no way to avoid that. And the first Fortran standard that actually did that came in 2003… that is, 8 years after Java had eaten the whole OOP cake.</p>
<p>Imagine if Fortran OOP features had been available in 1990 already. Polymorphism, inheritance, encapsulation, and so many other buzzwords that the <a href="/the-gang-of-four/">Gang of Four</a>, the <a href="/the-three-amigos-among-others/">Three Amigos</a>, and many other jazz bands of the era were so happy to repeat <em>ad nauseam</em> at each conference. But Fortran had already been slow at introducing structured programming in the 1970s, so the inertial forces that drove its evolution were already at play decades before.</p>
<p>That is probably the most important reason why Fortran missed the OOP hype train: its committee-design nature, which involved particularly long discussion sessions, sometimes seemingly endless ones, in which little or no progress would be made. <a href="/mark-jones-lorenzo/">Mark Jones Lorenzo</a>, in his 2019 book about the history of Fortran, induces deep sigh after deep sigh in the reader while enumerating the various moments into which the language slipped into oblivion. There were many, and they are all unfortunate.</p>
<p>(Actually, no, scratch that: it was not that the committee was slow; it was <em>also</em> that the industry moved at an incredibly fast pace. To give them some credit, it was not entirely their fault. Driven by marketing and <a href="/issue/issue-001-hype/">hype</a>, the best was buried by the popular, as is usually the case.)</p>
<p>I would argue that the web was the second big trend that Fortran missed; fast-forward to 2026, where are the server-side frameworks to build REST APIs in pure Fortran? There was one available framework out there, called <a href="https://web.archive.org/web/20260512100957/https://fortran.io/">Fortran.io</a>, but I have to point the user to a snapshot on the Internet Archive (again) from May 2026, because the owners of the domain let it slip away, and now somebody has cybersquatted the domain with some gaming stuff you do not want to see.</p>
<p>The web was my first contact with IT in 1997, and it was a domain where you would use C++ to build browsers, JavaScript to add pizzazz to your web pages, and Java to build backends. Well, and (sadly, may I add) also VBScript, which was the choice for quick-and-dirty database-backed websites (or &ldquo;3-tier architectures&rdquo; as we called them back in the day) in a world of Microsoft NT-powered servers crippled with <a href="https://en.wikipedia.org/wiki/Back_Orifice">Back Orifice</a> exploits. There was no Fortran in sight. Nothing at all. Nope. Nada.</p>
<p>I let you choose between the possible third (and following) missed trains: in no particular order, we can imagine a world where Bitcoin and other cryptocurrency brokers were created and ran with Fortran. Or another in which developers could create iOS and Android apps with it. Or where developers could run Fortran-based APIs in their Kubernetes cluster (see above). And another where Jupyter Notebooks would run Fortran kernels natively (ok, this last one actually is possible, thanks to the LLVM-based <a href="https://docs.lfortran.org/en/">LFortran project</a>), and this would have displaced Python as the default language for AI applications and scientists.</p>
<p>It is all sad indeed. <a href="/the-state-of-python-in-2021/">Python</a> (arguably, mostly through <a href="https://numpy.org/">NumPy</a> and <a href="https://scipy.org/">SciPy</a>) ate Fortran&rsquo;s lunch and ruthlessly pushed the old man aside, with bad manners and leaving the scientific and engineering communities to deal with a (let us be honest here) slower language (oh, but it is interpreted, not compiled. Big deal.) Did Fortran deserve better? Yes, of course it did. Was the Fortran committee up to the task? Hardly.</p>
<p>Not all is lost, however. The LLVM Fortran compiler has been officially available <a href="https://www.theregister.com/software/2025/03/17/llvms-fortran-compiler-finally-drops-the-training-wheels/1448067">since last year</a>. Intel is still distributing and <a href="https://www.intel.com/content/www/us/en/developer/tools/oneapi/fortran-compiler-documentation.html">documenting</a> its Fortran compiler… and there are more compilers <a href="https://fortran-lang.org/compilers/">available</a> if all else fails. NASA is still <a href="https://www.nas.nasa.gov/pubs/ams/2015/04-28-15.html">heavily using it</a>. It is still very much used in <a href="https://www.paulnorvig.com/guides/modern-fortran-for-high-performance-computing.html">high-performance computing</a> (HPC) applications. Compilers compatible with the 2023 standard can compile FORTRAN 77 programs without problem. And for whatever it is worth, Fortran made it to the 10th position of the <a href="https://www.tiobe.com/tiobe-index/">TIOBE Index</a> in <a href="https://web.archive.org/web/20240524103859/https://www.tiobe.com/tiobe-index/">May 2024</a> (at the time of this writing, it is still featured in a very honorable 19th position.)</p>
<p>Fortran is <a href="https://www.hpcwire.com/2023/09/20/fortran-still-compiling-after-all-these-years/">still compiling</a> and still running, and this is for the <a href="https://www.route-fifty.com/infrastructure/2023/04/can-fortran-survive-another-15-years/385726/">foreseeable future</a>. The community around the language is <a href="https://ieeexplore.ieee.org/document/9736688">still strong</a>, vocal, and active, seemingly <a href="https://ondrejcertik.com/blog/2021/03/resurrecting-fortran/">&ldquo;resurrecting&rdquo;</a> the language and keeping its legacy alive, hopefully with stronger will and more agility than the previous generations.</p>
<p>A 2022 paper titled <a href="https://ieeexplore.ieee.org/document/9736688">&ldquo;The State of Fortran&rdquo;</a> (freely downloadable <a href="https://arxiv.org/pdf/2203.15110">from arXiv</a>) summarizes the situation in much better words than this article ever could, but suffice to quote the following:</p>
<blockquote>
<p>Fortran is perceived in some software development circles as archaic, lacking the features and conveniences of newer languages, and characterized by an obtuse syntax. However, such considerations typically stem from a lack of familiarity with Fortran standards later than Fortran 77.</p>
</blockquote>
<p>Say it again louder for the ones in the back. Also, I do not know who needs to hear this, but just in case: in Fortran 2023 you <em>can</em> have variable names longer than six characters, and integer ones do not need to start with <code>I</code>, <code>J</code>, <code>K</code>, <code>L</code>, <code>M</code>, or <code>N</code>.</p>
<p>For a language still supporting the <a href="/harmfully-considered/"><code>GOTO</code> keyword</a>, Fortran was much luckier than <a href="/programming-the-liberal-arts/">BASIC</a> ever was.</p>
<p>Cover photo by <a href="https://unsplash.com/@hubblespacetelescope?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">NASA Hubble Space Telescope</a> on <a href="https://unsplash.com/photos/an-artists-rendering-of-a-solar-system-with-planets-in-the-foreground-SwhFPqTYhd4?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</p>
]]></content:encoded></item><item><title>John Backus</title><link>https://deprogrammaticaipsum.com/john-backus/</link><pubDate>Mon, 03 Aug 2026 05:01:01 +0200</pubDate><guid>https://deprogrammaticaipsum.com/john-backus/</guid><description> &lt;p>In an era where your favorite JavaScript runtime is rewritten in Rust by an LLM bored at lunchtime, and we need gigabytes of RAM to render a chat application, it is remarkably humbling to look back at the primordial soup of programming. You might scoff, roll your eyes, and adjust your Neovim configuration to stubbornly ignore &lt;code>.f90&lt;/code> files. But while we debate the aesthetic merits of closures, pure functions, and pipe operators, Fortran is still quietly out there, calculating orbital mechanics, running global weather simulations, and generally doing the grown-up work of the world.&lt;/p></description><content:encoded><![CDATA[ <p>In an era where your favorite JavaScript runtime is rewritten in Rust by an LLM bored at lunchtime, and we need gigabytes of RAM to render a chat application, it is remarkably humbling to look back at the primordial soup of programming. You might scoff, roll your eyes, and adjust your Neovim configuration to stubbornly ignore <code>.f90</code> files. But while we debate the aesthetic merits of closures, pure functions, and pipe operators, Fortran is still quietly out there, calculating orbital mechanics, running global weather simulations, and generally doing the grown-up work of the world.</p>
<p>This month&rsquo;s Vidéothèque entry is <a href="https://www.youtube.com/watch?v=KohboWwrsXg">&ldquo;The Beginnings of FORTRAN&rdquo;</a>, a short low-resolution window to a long-gone time, 70 years in the past, when a guy named <a href="https://en.wikipedia.org/wiki/John_Backus">John Backus</a> decided that writing machine code by hand was a tedious and inefficient.</p>
<p>In this video we are introduced, one by one, to the members of the original FORTRAN team and learn quite a few crunchy details about what it meant to create a programming language when there were not any to take inspiration from. For example, one of the project motivations was that the <a href="https://en.wikipedia.org/wiki/IBM_701">IBM 701</a> (one of the direct ancestors of the <a href="/ken-ross-paul-laughton/">1401</a>) was simply too fast (kids: Tokenmaxxing was not a thing yet). The problem was, they could not figure out how to write code by hand fast enough to keep the machine busy; you see, &ldquo;machine time&rdquo; was insanely expensive back then, so you had better be running some useful program to justify the cost.</p>
<p>Thus, they were forced to invent a higher-level language just to keep hardware busy. Following that reasoning, I guess they could have invented <a href="/insert-coin/">video games</a> instead, but hey, let us be honest, that would not have passed the business filters at IBM.</p>
<p>The uncertainty was such that whenever management asked when FORTRAN would be ready for sale, John Backus simply replied, &ldquo;Come back in six months.&rdquo; They kept this charade up for three straight years: take notes for your next sprint planning session (inversely, if you are a manager, beware if you hear this very sentence in said meeting).</p>
<p>Thankfully, <a href="https://en.wikipedia.org/wiki/Lois_Haibt">Lois Haibt</a>, who was originally hired as a &ldquo;technical typist,&rdquo; ended up becoming one of the brightest technical engineers in that original FORTRAN team. Take that, rigid HR job descriptions and male-only environments. As she nonchalantly mentions at <a href="https://youtu.be/KohboWwrsXg?t=351">05:51</a>,</p>
<blockquote>
<p>Nothing was known about parsing. It was all invented at the time.</p>
</blockquote>
<p>The team worked in such a secretive, unstructured, and intense manner that the IBM elevator operator referred to them as &ldquo;the white coats,&rdquo; treating them as irregular mad scientists within the otherwise buttoned-up suit-and-tie <a href="/think/">IBM corporate culture</a> of the 1950s. And naming was already one of the most complicated things in computer science: John Backus would constantly pitch terrible names for the language. When he finally proposed &ldquo;Formula Translation&rdquo; (spoiler alert: &ldquo;FORTRAN&rdquo;), the consensus from the team was a collective groan (&ldquo;I went ugh&rdquo;, recalled Haibt). But they had nothing better, so it stuck. As <a href="https://fortran.bcs.org/2001/pioneers.html">Harlan Herrick</a> mockingly says in <a href="https://youtu.be/KohboWwrsXg?t=471">07:51</a>:</p>
<blockquote>
<p>&ldquo;FOR-TRAN&rdquo;. It sounds like something spelled backwards.</p>
</blockquote>
<p>The punchline? The compiler this ragtag group of &ldquo;white coats&rdquo; built without any theoretical foundation was so terrifyingly optimal that it produced the fastest, most efficient machine code available for the next twenty years. For the following two decades, or roughly until Pascal and C and C++ (and a decade later, Java and Python) took over the professional coding markets, FORTRAN reigned as the most pragmatic approach to building software on any computer available at the time.</p>
<p>This video reminds me of Jim Henson&rsquo;s 1967 &ldquo;The Paperwork Explosion&rdquo; short movie, which we <a href="/jim-henson/">reviewed earlier</a> in this magazine, and which is also directly related to something coming from IBM. Here go some more videos for your further exploration of FORTRAN/Fortran: <a href="https://www.youtube.com/watch?v=NMWzgy8FsKs">&ldquo;FORTRAN in 100 Seconds&rdquo;</a> by <a href="/fireship/">Fireship</a> and <a href="https://www.youtube.com/watch?v=5yhuyl-O3wE">&ldquo;The Untold Story of FORTRAN&rdquo;</a> on the CodeSource channel. Or jump directly to what <a href="/bret-victor/">Bret Victor</a> had to <a href="https://www.youtube.com/watch?v=8pTEmbeENF4&amp;t=274s">say about it</a> in our first Vidéothèque entry ever.</p>
<p>Fortran is not fashionable these days anymore, sadly. It will most probably <em>not</em> win you any points at your next retrospective meeting. But it is alive, it is ruthlessly fast, and as this video reminds us, it was forged by those who had to invent the wheel before they could build the car.</p>
<p>Watch this month&rsquo;s Vidéothèque movie, <a href="https://www.youtube.com/watch?v=KohboWwrsXg">&ldquo;The Beginnings of FORTRAN&rdquo;</a>, on YouTube.</p>
<p>Cover snapshot chosen by the author.</p>
]]></content:encoded></item></channel></rss>