cstross,
@cstross@wandering.shop avatar

This is not a software glitch, it's the Y1C problem: old mainframes were so storage-constrained that they only allocated two decimal digits for passenger age, and adding another digit would mean rewriting software that in some cases has been in use and constantly patched since the late 1950s.
https://press.coop/@BBCNews/112345996328670433

Life_is,
@Life_is@no-pony.farm avatar

@cstross

Still it would be possible to patch input processing to translate 100 and older into 99, or 0 or to translate 100 to -1, ... 107 to -8, and 108 and older to -9.

fdr,
@fdr@mstdn.social avatar

@Life_is @cstross If you could use two arbitrary characters (opposed to simple digits), you can just store the age as two hexadecimal digits, up to 255 years

cstross,
@cstross@wandering.shop avatar

@fdr @Life_is Indeed. But: these are tickets that may be used for routing via different airlines. So any change in passenger record format probably needs to be agreed to and implemented by multiple airlines.

ovid,
@ovid@fosstodon.org avatar

@cstross As an ex-COBOL programmer who was knee-deep in the Y2K mess, one of the issues is that many of those old COBOL programs were compiled, but the source code was lost.

In some cases, corporations were worried COBOL vendors would disappear, so they created incompatible, in-house COBOL compilers, making the mess even worse!

Naturally, there were no tests to verify that the software functioned correctly ...

DanielEriksson,
@DanielEriksson@mstdn.science avatar

@ovid @cstross ...wat?

ovid,
@ovid@fosstodon.org avatar

@DanielEriksson @cstross

My favorite bit? In 2000, I was trying to fix a COBOL program which included the comment "Converted from punch cards in 1968." I was born in '67, so I'm sure it was written before I was born, yet it was mission-critical software for that company.

I was in my 30s at the time, which would have made me one of the older devs in many companies, but for COBOL I was the youngest. They were confused when I complained about the use of GOTO for all flow control ...

jackwilliambell,
@jackwilliambell@rustedneuron.com avatar

@ovid @DanielEriksson @cstross

I wrote COBOL for the State of Washington back in the 1980s; much of the codebase dated back to the 1960s.

What I found particularly interesting was the way the oldest code was structured: a ton of single-purpose routines that processed input and produced output, strung together in different ways with JCL (Job Control Language).

It was basically UNIX pipes and filters, but for an IBM 390 and using tape drives for streams.

ovid,
@ovid@fosstodon.org avatar

@jackwilliambell @DanielEriksson @cstross The paucity of features in COBOL coupled with JCL are part of why it's so powerful! You'd write a simply COBOL project, save the data, the next step in the JCL would use that data, and so on.

I've always found it fascinating that it was so powerful because it could do less. Definitely a lesson that's been lost.

loke,
@loke@functional.cafe avatar

@ovid @cstross That reminds me of a story someone told me many years ago, so it's not first-hand but I can certainly see how it's true.

The company that the person who told me this worked for (or consulted for) was unable to run the program they had been using for ages. This happened after the machine was rebooted (or IPL'ed as it's called in the IBM mainframe world).

When they analysed the problem they realised the program itself was no longer on the disk. It had been deleted, and since it was already loaded, no one noticed until they had to reboot which cleared memory.

They didn't have any media for it, so eventually they had to contact the vendor. Turns out the had gone out of business years (10 or more?) prior. The application had been loaded by a representative of the vendor, and the machine hadn't been rebooted since then.

Phosphenes,

@cstross

Is this what everyone gets when they click on the link?

tanepiper,
@tanepiper@tane.codes avatar

@Phosphenes @cstross same here

addressforbots,
@addressforbots@apcn.nz avatar

@cstross wouldn't be the first time legacy code has caused issues like this
https://shkspr.mobi/blog/2021/10/ebcdic-is-incompatible-with-gdpr/

Of course in the story I linked to it was apparently fixed at great expense because a court in Brussels ordered it to be fixed and the issue in the article that I linked to would be likely to cause far less issues then a airline mistaking you for a baby

MortonRobD,
@MortonRobD@mas.to avatar

@addressforbots @cstross ex IBM mainframe guy here. EBCDIC has supported diacritics since way before that time. It even supported bidirectional text for Arabic script. If they are US based they'd be using this character set. https://en.wikibooks.org/wiki/Character_Encodings/Code_Tables/EBCDIC/EBCDIC_037

edyoung,
@edyoung@mastodon.online avatar

@MortonRobD @addressforbots @cstross amusing that the blog post says Unicode works, and the first "reaction" underneath says

SvenGeier,
@SvenGeier@mathstodon.xyz avatar

@addressforbots @cstross my native name is from a rare Namibian !kung dialect and I demand that the bank store it in it's correct Western transliteration '; DROP Table customers; ...

cstross, (edited )
@cstross@wandering.shop avatar

@addressforbots I note that the airline in question was American (edit) and it's a domestic US passenger, so GDPR does not apply in this case. Otherwise, though, she'd have a cast-iron case to sue them with.

dbc3,
@dbc3@mastodon.world avatar
cstross,
@cstross@wandering.shop avatar

@dbc3 @addressforbots Same difference, from over here.

hengymrohebwlad,

@cstross Makes you wonder if this is fossil code that should have been caught by the Y2K process, or if it's just crap code written by people too dumb to learn from the Y2K experience.

cstross,
@cstross@wandering.shop avatar

@hengymrohebwlad No, there's a lot of legacy stuff in the airline booking sector that goes back to mid-1950s SABRE, the first ever commercial realtime data processing system, designed in the punched card and thermionic valve era of mainframes. It's in permanent high throughput use and needs to interoperate with other airlines using similar kit for through bookings, and the record format for ticket records has barely evolved since the days of passenger tickets on steam ships.

hengymrohebwlad,

@cstross Thanks for sending me down the rabbit hole of Sabre record formats! 😱😱😱😱

A quarter century after the Y2K Filter, I still can't help thinking this is a problem that should have been solved by now. OTOH I guess there's only so many centenarians jetting about, so the airline industry no doubt feels it's probably not worth the cost. It's not like the Customer Experience is especially high on their agenda after all.

cstross,
@cstross@wandering.shop avatar

@hengymrohebwlad Before COVID19 did a clearcut through the old age homes, the centenarian population here in the UK was growing rapidly. Historically, centenarians were so rare that on their 100th birthday they'd get a congratulations telegram or postcard from the monarch. By 2010 they were talking about ending it—too many people were making it to that age.

lightninhopkins,
@lightninhopkins@mastodon.social avatar

@cstross hehe, I learned COBOL if you need a hand. That's funny.

stojg,
@stojg@mastodon.nz avatar

@lightninhopkins @cstross when the last cobol programmer stops working, it’s the end of banks, airlines and sewage infrastructure.

cstross,
@cstross@wandering.shop avatar

@stojg @lightninhopkins This is one of the things LLM Copilot software is being touted as a fix for. That and COBOL-to-Java translators.

skjeggtroll,
@skjeggtroll@mastodon.online avatar

@cstross @stojg @lightninhopkins

Neither is going to help. The problem with legacy apps written in COBOL is that they're legacy apps, not that they're written in COBOL.

It's like the Niesen-Stairway-Run. The real problem is not that the run is in a stairway, the problem is that the stairway in question is made to follow the contour of a mountain-side that climbs 1.6 km across 3.4 km.

cstross,
@cstross@wandering.shop avatar

@skjeggtroll @stojg @lightninhopkins Note that I said it's one of the things LLMs is touted for, not that they'd work. (They're snake oil marketed at the gullible to drain their wallet contents. In this case the gullible includes corporate execs too ignorant of their own IT asset portfolio and how its current level of technical debt evolved to understand what they're asking for.)

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • PowerRangers
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • hgfsjryuu7
  • Youngstown
  • InstantRegret
  • slotface
  • khanakhh
  • rosin
  • ngwrru68w68
  • kavyap
  • tsrsr
  • tacticalgear
  • Leos
  • cubers
  • everett
  • vwfavf
  • ethstaker
  • osvaldo12
  • Durango
  • mdbf
  • cisconetworking
  • modclub
  • GTA5RPClips
  • tester
  • normalnudes
  • anitta
  • All magazines