Monday, 1 December 2025

makefile.sh

Let me tell you about my deep, pure and abiding hatred for the Apache Maven build tool.

There is machine code, which tells a microprocessor exactly what to do in terms of bits and addresses.

There are procedural languages in which you tell the computer what to do. You have useful constructs like loops and logic, and named variables to store values.

There are functional languages. I'm oversimplifying it, but generally you tell the computer what value you want and it calculates it for you without any of the grubby details of explaining how it should calculate it. I class SQL as a functional language. In its purest form it has no looping structures and no variables. You tell it what you'd like to know and it decides how to get the relevant data from the disc and how to combine and process it for you. Many are the times that the query planner has come up with a deeply suboptimal order of operations and I've been powerless to persuade it to do it better. You get the right answer, but very slowly.

And then there's Apache Maven, which is supposed to make working on large software projects easier. You tell it where some things are and what you'd like to achieve. It then does what IT THINKS YOU SHOULD HAVE WANTED to do. I've spent far to long this week trying to control what an artifact was called, with persistence and the help of google, Stack Overflow, a very skilled senior engineer and an AI, we've come to the conclusion that no, you just can't do that.

Richard "And the Docs Are Terrible" B

No comments:

Post a Comment