New Modern Glossary of Computer Science

This is terminology I’ve collected over the years. Essentially like the jargon file but mine - with help from friends and colleagues credited fairly anonymously below. Feel free to credit me if you use this in written work, but I don’t believe copyright applies terribly well.

A couple of horses worth of glue code

For example, code that populates data into opensearch dashboards by running in a docker container, shelling out to azure-cli and a dotnet tool (written to run in linux) which extracts azure costs by resource, all marshalled by perl finally arriving at opensearch for convenient visualisation.

Favela design pattern

A combination of separation of concerns and lack of separation of concerns. Too many people sleeping in the same room, lots of metaphorical potential for leaks and raw sewage running in the street. Crime can be a problem. See also Ghetto code

Fictional interface

Code that never reached aspiration

First system syndrome

When the first attempt at doing something does far too much and doesn’t anticipate what people will actually want to do with it leading to a failure to provide a sane interface because what you can do and what you might sensibly want to do are hard to differentiate. See mod_perl.

Glass of concrete bugfixing

As in “the code needs to drink a glass of concrete and harden the fuck up”. To be used for code that does insufficient error checking and thus crashes in unexpected and poorly instrumented ways, generally due to a failure of management and craftsmanship.

Ghetto code

Code that’s in a bad, poorly maintained part of town. Could apply to specific subsystems, or could be the full Jakarta (or insert your city of choice here, sorry to the Jakarta people). Thanks Geoff

Historacle reasons

Because Oracle used to be a part of this computing infrasturcture, some aspects are over provisioned for reasons that are no longer neccessary but the over-provisioning is occasinaly convenient.

IDGAF - Information system Design General Abstraction Failure

Failure of fundamental abstraction. For example, in Unix-like operating systems, everything is treated as (for some value of) a file. This is an extremly powerful approach, and has multiple applications. Extending this fundamental abstraction, the Mac OS display subsystem everything is a PDF. Finding an appropriate fundamental abstraction is challenging, and getting it wrong can make life really difficult. For example in SAP, the popular German software enabling the violence of management consultancy, and beloved of big business and government, the fundamental abstraction appears to be the spreadsheet. This is an awful idea, and makes everything awful all the way down to the big bucks you get for being an SAP consultant.

The IDGAF backronym came from discussion on IRC (thanks mst!). GAF is clearly “general abstraction failure”, but I had to reconstruct the ID portion of the backronym as I currently lack access to my older IRC logs and mst sadly passed away.

Jenga design pattern

At some point it will fall over as prior work has left it unstable

Legendary interface

Code has undergone accretion over the years without sufficient maintenance or tests such that distinguishing between myth and reality is very difficult.

Magic payload

Generally a constructor that receives a large ill-thought-out data structure which works but it’s very difficult to understand why.

More edges than a suitcase full of razor blades

Pretty self-explanatory, given the technical definition of edge case. Generally this phrase is useful when being given an unreasonable deadline by management. While trying to accomodate their needs, the phrase provides an opportunity to instil liberal amounts of fear around the viability of ongoning activity if the problem is solved incorrectly.

I think this originates from mst during a conversation on irc. Possibly while discussing commercial networking code which was a research project that escaped - see entry below. The results of a couple of google searches supports my suspicions around the origin.

Mythical interface

Once, briefly in the distant past the code reached aspiration but never again.

The nailing the corpse in the upright position strategy

An approach to exception handling where most errors are ignored. (thanks Ben).

Pantheistic god objects

Rather than a single god object, there is a pantheon of them, with or without a leader object.

Research project that escaped

Code written by academics is often of quite poor quality. My honours thesis supervisor was responsible for code to support psychological research which could render a computer un-bootable. Note that it was not doing anything deliberately clever on the operating system level, so this outcome was definitely unexpected. The same person - who did some important fundamental research on face recognition - also managed to write code that could fill disk at a faster rate than the data could be deleted.

Since then I’ve come across a couple of commercial products owned by large, old and evil big tech companies which will remain nameless for now that have similar properties

I believe this is also an mst-ism.

Ruminant design pattern

Code that is required to ingest a difficult to digest data structure can often be made easier to deal with by taking said indigestible code, chewing it up, performing some biochemical process in the first stomach and regurgitating it. Following this the data is then chewed on further and ingested again whereby the full nutritional value of the meal can be realised. Note there are various ruminant designs, analogous to the full range of ruminant designs (grass and leaf digesting animals) found in nature.

Question: Is there something similar analogous to fungal digestion which is more deeply symbiotic?

Spaghetti Western code

Code that’s terribly disorganised and frequently exercised. When cowboy code gets out of hand (thanks Brett).

Voodo UX

requires a priest or priestess to operate successfully

Yak circumcision job

When a job is analogous to having to circumcise a yak and thus should be quick and easy, but subsequently it’s discovered that doing so is much more time consuming than expected because it turns out the job requires shaving the entire yak after all.

Whackamole debugging

What is says on the tin. Does it differ significantly to “hungry hippoes debugging”?