Here’s the full answer, along with how they triage the problem – for instance by assigning the same flight number to more than one flight a day (although that means they need for it to be flights that would never both be in the air at the same time, such as where the same plane is used and can’t reasonably be substituted)
This sounds like it's calling for trouble!
Whenever I hear that any IDs could be "recycled", I make a mental note to replace the person making such a proposal from all teams that I am involved in.
The worst is I once was put to work on a system where they even recycled GUIDs... I thought "which part of GUID do you not understand, the G part or the U part?" (from which it follows they also don't really understand what ID means)...
I'm certain each flight has its own completely unique ID buried somewhere in a database. But, shorter codes can be spoken into a radio faster and with lower probability of misinterpretation - both critical features for air traffic control.
Those shorter codes will necessarily be reused, it's just a question of the time interval between re-uses of any particular code.
I faintly recall seeing two Southwest flights from ORD to BWI that had the same code a couple years ago, so I decided to look it up. And yes, it's a thing: Flight 1555 from ORD to BWI departs at 4PM today, and flight 1555 from ORD to BWI departs at 4:20PM tomorrow.
I'm curious, can anyone find a re-used code on a shorter time interval than that? It seems like 24 hours is perfectly reasonable, but how narrow can the window be? 12 hours? 6?
There is. It's called the Globally Unique Flight Identifier (GUFI), and it's essentially a UUIDv4[1].
[1]: https://docs.fixm.aero/#/general-guidance/flight_identificat...
Great, step one cleared.
Now have all the legacy systems everywhere that use 4-digit flight numbers been updated or replaced?
4-digit flight numbers are for humans, not computers
But humans, who interface with computers, are known to cause trouble.
Humans write the code that makes those computers do things, though. And humans don't always read the standards, docs, or manuals before doing so.
Like the mechanical displays at various airports across the world pictured in the article?
Overall seems like a project of huge size and somewhat unknown reach. Not my domain, but I would imagine all kinds of ground support systems to have the four letter flight numbers baked deep into their assumptions. And not only direct support like fuel, cleaning, work shift scheduling, but also logistics systems for cargo, military systems, myriad of ticketing systems etc.
So we’re already too late by about 20 years to fix the issue properly.
Undoubtedly we’ll push the issue forward for another 10 years before realizing that the next best time to start was today :/
My understanding is that air traffic control is extremely computerised even though direct control is still done over analogue VHF voice radio. The flight numbers are essentially only human-facing (both passenger flight numbers, and ATC callsigns). When flights are handed off between different stations or different flight information regions, their computer representations must conform to the Flight Information Exchange Model (that's the FIXM in the website I linked above).
It's a very top-down initiative by ICAO and all the large aviation authorities—quite unlike the rest of the software development industry.
Frankly speaking ATC is the only thing that really matters in the context of flight safety—ticketing, terminal operations, etc don't (and don't need to) deal with FIXM.
This line made me chuckle:
Naming things are hard you know ...
Please tell me it's pronounced "goofy."
It actually is. I interned at a civil aviation authority where I had to implement a GUFI generator, and they all pronounced it 'goofy'.
Short flights out-and-back from a hub can have the same number on the two legs. An example is AA 1992, which today departs PHL 3:06 PM, arrives ATL 5:17 PM, departs ATL 5:57 PM, arrives back at PHL 8:05 PM. (All times US Eastern.)
My mother recently had an itinerary where both her flights were this flight - the PHL-ATL leg on a Sunday and the ATL-PHL leg on the following Saturday.
(It looks like as of Tuesday AA 1992 becomes a DFW-SEA-DFW flight, but it's the same sort of thing.)
I figure this isn't a problem as long as the two legs are flown by the same plane. But what if the PHL-ATL flight were delayed and American decided to fly the ATL-PHL flight as scheduled with a different plane (say because lots of people booked on that flight had connections at PHL?) That seems like it could create trouble.
I recently flew SLC-CLT and CLT-SLC, and both flights were DL2070.
I've also seen this on Delta on ATL-PHL. I had guessed it was limited to relatively short flights - because why waste a number on a short flight, and because there's less room for irregularity where you end up with both flights in the air at the same time - but it looks like at least SLC-CLT on Delta and DFW-SEA on American do it.
If they had to switch to a new plane, wouldn't they also need to refile the flight plan? From what I understand that would be the case, so either a new number would be assigned or the details would be updated in the system. I'm not a pilot, I know a few instrument rated pilots but they're private, not commercial so this may not be the case.
To be fair, this problem is semi-solved by European airlines by having callsigns like BAW44W.
Which uses the last 2 numbers of the flight number, and an alphabetical character. BA use this on a lot of transatlantic type flights where delays etc can be an issue.
Why do you find that remarkable? That's just the same flight departing at slightly different times on two different days.
Flight # of Theseus?
Let me try to explain: On routes with high frequency flights, airlines will generally issue a different flight number for each unique departure time to a particular destination. E.g. YY500 departing at 9am to LAX on Mon/Wed/Fri and YY502 departing at 9:05am to LAX on Tue/Thu/Sat/Sun. It's unusual to have the same flight number YY500 apply to either the 9am or 9:05am flight. But if there is no collision (i.e. 9am and 9:05 doesn't operate on the same days) it seems a sensible optimization to reuse the flight numbers. It's just not very common practice in the airlines I regularly fly with (NZ, QF, JQ etc) so can understand why it seems remarkable. Air New Zealand for example only 'reuses' flight numbers for their flagship (e.g. NZ1, NZ2, NZ3, etc) flights whereas their NZ5xx NZ6xx series flights for high frequency domestic flights generally are unique in respect to departure times and rarely do they reuse a flight number for a different departure time.
I thought that airlines that fly the same origin to destination daily at the same time always use the same flight number for that flight each day.
At least that's what I feel like I normally see.
Not always but often.
Yeah, always was being generous. Often is probably an accurate qualifier.
Tangentially, train 'headcodes' in the UK are not unique for various historical and convenience reasons. They're supposed to be unique within a given 'area' and period of time, but it's not very well specified what either of those are.
It rarely causes problems, but very occasionally does.
This is true in the US as well. For example, all northbound trains on Amtrak's Coast Starlight route are train 14 and all southbound trains on the same route are train 11. There's currently a train 14 west of Los Angeles that originated this morning. Meanwhile train 14 that originated in Los Angeles yesterday is a couple hours from pulling in to Eugene, Oregon. Likewise there's a train 11 that just departed Seattle and another train 11 that's just about to pull in to San Jose.
I assume that in theory any given train #/station/date is unique, but given Amtrak's notorious delays, I'm sure that theory has been disproven at least once.
There are usually flights from hub to spoke, and spoke to hub, and each one will have the same number. This is within a 24 hour period. 3934 is one such flight between PHX and SEA.
Flight codes are meant to signify the particular starting point, stops, and destinations that will be made along the way.
You can change the aircraft and the flight code stays the same. Many flight codes happen on a regular schedule, like daily. But the same flight path and pattern at a different time on the same day will get a different flight code.
Some patterns have many flights per day along the same path — maybe ten or more. But they each get a different flight code.
All of this is within a single airline or codeshare, of course. Two different airlines can use the same four digit set of numbers for totally different flights, because the full flight code includes both the airline designator and the four digit number.
Flight numbers get changed when airlines re-do their scheduling. It's still a fairly manual process as sometimes the numbers are symbolic.
Either way, when they talk about re-using flight numbers on the same day, what they mean is they create multi-stop flights to use the same number for each segment instead.
So you'll see flights like, hypothetically...
Getting converted into a single flight number.
Basically converting this to a flight from Chicago to Chicago via New York and Montreal nets them a 4:1 reduction in numbers used.
You can still book each segment separately, and if they generally book the same plane, say some Envoy Air regional jet, for all four segments, there's little risk that irregular operations will lead to two planes in the air at the same time with the same number. Worst case they can give that one segment a new flight number for that day.
They've been doing this a lot in the last few years, especially on regional flights, and especially in the northeast where there's a ton of short hops.
[edit] If they want a bunch of their flight numbers back they can stop codesharing and switch back to relying on interline ticketing and sell the operating carriers flight number. I can't really think of anything good that's come of codesharing to individual passengers.
Have you ever changed the static IP address of a computer? You just “recycled” a “globally unique” ID.
Recycling unique IDs (more precisely: changing the underlying thing the ID points to) is not impossible; there’s lots of pathological failure modes; for certain ID-spaces it’s kinda a required use case; so we have to deal with it.
IP addresses (especially IPv4) are not even supposed to be globally unique.
How many 192.168.1.1 devices are out there? How many different distinct physical boxes respond to traffic going to 1.1.1.1?
You're right but for the wrong reason. You are referencing the private blocks that are designed for private use. The vast majority are not designed for private use.
The reason it's not unique (using my rudamentry understanding of networking) is because multiple routers can broadcast the same IP so devices can use the closest router.
However I think it's fair to say IP address are intended to be unique to an org while private ips are not.
Sure, but the person I'm replying to wasn't making a distinction here. They're just saying, "Have you ever changed the static IP address of a computer", where does that exclude RFC1918 IP addresses? I'm right for the right reasons IRT to the person I'm replying to. There are IP addresses which are absolutely not globally unique in any way, shape, or form by design.
"Unique to an org", that's massively different from "globally unique" which is what the person I replied to suggested.
100% correct here, that's the biggest reason why you'd have an IP address shared among a lot of different devices.
Real talk.
I’ve been working in tech for 20 years, am coming off a year-long sabbatical, and for the past couple of months have been struggling with the feeling that the joy is gone and I should consider a radical career change.
Reading (what feels to me as) the aggressive pedantry of parent commenter in this thread is giving me a straight up anxiety attack. I’m not sure I have it in me anymore to be in meetings with people whose brains work this way.
Is it like this in every industry or is it more concentrated in tech? I don’t know who’s going to see this, but if you have any perspective or feedback you’d like to share, I’m all ears.
If someone says, "Tom Hanks played Jon Snow in Game of Thrones", and then you reply "that's incorrect, it was Kit Harrington", and then people say "well it's really Tom Hank's cousin that played him", which is still incorrect, is it aggressive pedantry to point out that's still wrong?
IP addresses are not globally unique. IP:PORT is not globally unique. Kit Harrington played Jon Snow in the HBO series Game of Thrones. These are just cold, hard, facts.
Looking for real feedback here, as I don't really want to give anyone panic attacks, but what would you suggest I say to posts attempting to correct me saying I'm wrong when I know they're factually incorrect? Just accept the falsehoods?
This is the new world we live in, the large group finds 'social correctness' more important than actual correctness.
If you find a good answer to this please let me know.
I've read books on this topic, and they say to come at the problem from an empathetic view point asking questions and trying to understand the person, however I suggest that you simply dont waste your time, you can't fix peoples broken understanding.
I've had hyper-pedantic arguments in many workplaces, but they're usually focused in tech or other "intellect driven" fields.
A lot of people (Americans especially, I guess due to their Silicon Valley) think you need to work in tech to work in tech. There are tech jobs in every industry, both IT and other types of tech. I recommend not being in the tech industry - working for a manufacturer with embedded systems or doing IT for a finance company is a lot better for your mental health.
Because of NAT, it’s actually “IP + Port#” that is globally unique, and ultimately associated with a single physical network interface on a device (e.g an ethernet port on a PC).
There’s exceptions like broadcast IPs, but the point is that it is a system for uniquely locating devices and listening OS processes with IDs routinely shifting around.
So which globally unique box is 192.168.1.1:443? Can you point to exactly one device out there with that IP:PORT combo? There's probably hundreds of millions of that IP:Port combination currently running and listening.
Which globally unique box is 8.8.8.8:53? You think there's seriously just one network adapter listening for traffic at 1.1.1.1:53? These aren't "broadcast IPs".
https://en.wikipedia.org/wiki/Broadcast_address
And even then, "ultimately associated with a single physical network interface on a device" isn't correct either. You can have multiple physical interfaces listening on the same IP and end up with the same ports.
https://en.wikipedia.org/wiki/Link_aggregation
Well the 192 case would probably have an external IP + Port uniquely mapped to it in the router’s NAT table. I think you’re missing the larger point though. No one said IPs are exclusively used as GUIDs. Just that they are used as GUIDs, which they are in the majority of cases, and those GUIDs are re-assigned over time.
My Macbook Pro currently has unique IP + Port, associated with a single process listening to it over NAT and packets you send are routed to its network interface. Next week, someone else’s laptop could have that same IP + Port. That’s the main idea here, not these exceptions.
Only on really crappy NAT implementations. My home router can have hundreds of thousands of NAT states, and yet there are only ~61k high number ports. How do you think that works?
Because it is not just "external IP at this port goes to this LAN host". Its the whole session information, SRC_PORT, DEST_PORT, SRC_IP, DEST_IP, all get figured into it.
At this moment there are several NAT states in my home router that share the same public IP:PORT combination, going to different LAN IP:PORT combinations.
An IP address is not globally unique. An IP:PORT is not globally unique. Treating them as globally unique shows a misunderstanding of networking concepts. They're often unique to a single host, but that's not a requirement.
Once again, do you really think there's a single network adapter out there that has 8.8.8.8:53?
They are most definitely designed to be globally unique, and we fucked it up.
If that was supposed to be the case it's been fucked up since they first gave 19.0.0.0/8 to a car company in 1988, or when IPv4 was originally designed with such a small address range.
there are a handful of ranges in IPv4 that are NOT globally unique. You're describing a much smaller set of IP ranges that are designed to be used+reused but not routable.
if you take someone elses public IPv4 address and they're using it, neither one of you will be functional, and they will come knocking on your door.
Sure, but if I have the IP address 1.2.3.4 I can have lots of unique physical things have that publicly routable IP address and have them all work if I do it right.
https://en.wikipedia.org/wiki/Anycast
I understand the sentiment, but in this case, someone is trying to solve for constraints they didn't invent.
Flight number was fixed to 4 digits long ago and propagates out to a lot of different systems, many not in the same company as the airline, also many being government entities.
So they don't have a lot of great choices.
Seems to me like an ego issue honestly since the article points out that a large part of the bloat is from codesharing, using the actual operators code feels like an obvious solution unless egos are too fragile.
It's not ego, it's marketing, loyalty, and customer comfort.
Passengers don't want to see "multiple airlines" in their itinerary. They wonder if the baggage allowances are the same, and if those bags will make it all the way to the final destination. They wonder if they'll get miles on their "main" airline for the whole trip, or if it will be broken up between different loyalty programs. They wonder if the connection is actually doable time-wise, and if there's a delay, will the airlines work together to either hold the next leg for some amount of time, or rebook without hassles and fuss and each airline pointing at the other, claiming it's not their responsibility.
Codeshares solve all these problems.
Codeshares would solve those problems just as well without a separate flight identifier for every airline.
Honestly codeshares suck regardless. If I chose an airline it’s because I did not want to deal with their annoying competitors.
Part of what marks it as a code share is those marketing carrier/flight and operating carrier/flight fields that get propagated out lots of places internally and externally. If you just up and change those, then your flight listings would look wonky on, say Expedia. Or your reconciliation process to get the revenue in the right place might break, etc. Two examples of which there are many more.
So the ego thing is somewhat true, but that decision happened long ago, and already created tendrils that are hard to unwind.
That sounds a lot like party-line arguments honestly, maybe rooted in 1960s issues
1: If I've paid on a non budget airlines _site_ (like Lufthansa,Air France,SAS,etc) and then see another livery on the plane I'm boarding that I'm not expecting I'd be slightly disappointed and lose trust in the selling airline regardless of any codeshare. If I see when ordering on the SAS site that the second leg on a route is handled by Lufthansa I'm not gonna worry.
2: Baggage allowance is clearly stated when ordering tickets online from a serious airline (because they love to show low prices for no checked in baggage and scrounge you for any extras).
3: I was actually wondering about that on a recent flight so I kept an eye on details and the baggage tag receipt I got clearly stated the route I was flying so I knew the baggage would end up where needed.
4: Bonus program points are usually stated when ordering.
5: The US should just follow the EU lead and harmonize rules a bit (maybe there's already some basic rules in place?), EC 261 has codified some basic rules to alleviate traveler worries in terms of responsibilities when it comes to delays and cancellations. (1)
It's 2024 and we really don't need to pile on bad cludges upon 1960s solutions to keep things working.
And yes, yesterday or today might've been the time to start a process to extent the flight code system within a 20 year horizon, but to extend it in a hurry because of airlines duplicating crap with codeshares is just silly.
1: https://europa.eu/youreurope/citizens/travel/passenger-right...Sounds like they are artificial constraints.
I'm sure it sucks that it's "four digits only" but the air travel industry isn't immune from changing specifications. I believe ancient cultures called this software maintenance.
Couldn't agree more, not even interested in debating it
The misconception here is that Flight numbers are not treated as IDs. A unique key to any flight is the composite of number/origin/departure date.
And it's mostly a holdover from legacy systems airlines are entrenched in, so there isn't much else anyone can do here short of completely reinventing the mainframe reservation systems and heavily refactoring all the pieces that depend on it.
This is commonly called "software maintenance". I believe that most places have contracts to keep software up to date for changing specifications/operating systems.
Flight numbers are already recycled (sometimes on the same day). The proposal is just changing the recycling frequency.
This whole argument reminds me of something. Found it. (Can't believe that was only 2 months ago.)
You'll regret using natural keys https://news.ycombinator.com/item?id=40580549 (554 comments)
Given that the industry has rejected the natural but very expensive solution, and that airlines exist in a connected space, this information is shared with partners and external parties so they can't just change their internal systems, it doesn't seem like there are too many solutions.
One solution could be to assign multiple airline codes per airline, but I'm not sure of the downsides.
Do you have a solution you think would work?
Hey they are inventing NAT. Nice.
Wait, how are they doing that? My mental idea of NAT is that it dyanmically links (address × port) pairs to local addresses. What would be the "port" in the case of flight numbers?
UTC Date + Time of flightplan takeoff
If that would be usable and could be assigned at sufficient precision the flight number would not be necessary at all!
origin,destination tuples.
NAT for airline flight numbers would fix this problem and improve security to boot!
Isn't this what Southwest essentially does? I've been on a Southwest flight that makes four or five stops, all with the same number. But I'm sure no person took more than one stop on the same plane.
No, that's still one flight path just with several stops. So there's not more than one plane in the air with the same number. There's a difference between a flight "continuing on" and an entirely different flight plan. And I dunno, there's probably some percentage of riders who might continue on past a single stop. It's not impossible.
For example:
https://www.southwest.com/air/flight-status/path.html?depart...
There won't also be a SW981 today that say takes off from HOU to OKC.
It works well enough for trains too. On those you get to stay onboard for multiple legs though, and I believe that’s quite rare for flights.
It's interesting that this is called out, because there are frequently at multiple flights in the air with the same flight number
QF1 / QF2 is now over 24 hours, and has daily flights. It seems pretty feasible to have the SIN-LHR leg be delayed just enough so there's two SIN-LHR QF1s in the air at the same time.
Singapore Airlines has some 19 hour flights. Qantas hopes to have a 22 hour flight 'soon'. Very feasible that these can be delayed just long enough so there's two of the flights in the air at the same time.
I think you do not need 24 hour flights for that. Some flight numbers are used multiple times throughout the day. If one gets delayed too much, then two planes can be in the sky at the same time with the same flight number.
It’s gotta be a big YMMV thing. I wonder if US airlines might do that domestically only but not for international.
Air Canada will renumber a daily flight if the delay goes past midnight (to avoid having two departures with the same number on the same day). I doubt it’s just a courtesy, but an incompatibility with their (or enough airports’ systems).
There's an EMR/EHR we use at my employer that reuses UUIDs. If an appointment is moved/rescheduled, the UUID is reused for that appointment meaning the UUID is no longer UU. It causes major issues with other apps that interact with the EMR/EHR, to the point we have to educate users to cancel and create new rather than rescheduling appointments.
That seems... fine... to me? It's not a different appointment; the time has just been changed. It feels like that's a bug with the other apps: they are assuming that they can cache all metadata associated with an appointment and that nothing will ever change, but that's a bad assumption.
Well that would depend on what the written specification of that id is.
Is it the id of the appointment at that time or is it the id for the appoint meant.
Seems like the originator chose the latter and the others the former.
Whenever I hear that any IDs could be "recycled", I make a mental note to replace the person making such a proposal from all teams that I am involved in.
This sounds pretty messed up to me. Someone makes a suggestion or throws out an idea you don’t like so you’re gonna essentially cut them out of your professional life or even fire them? Am I reading this right?
I feel like it’s completely understandable. There’s a certain kind of person that thoughtlessly makes comments like this, and it extends beyond just ID’s. You do not want them on your team.
In some instances it’s simply because they are extremely junior and they can be taught, but most instances it’s because they have a habit of shortcuts.
Now that I think of it, this would make a great interview question.
I work on a system where id reuse was necessary due to memory constraints. We were identifying hundreds of thousands of objects using GUIDs and referencing the GUID of course cost the whole 128-bits. All this data also had to be networked.
We moved the system towards using arrays which are filled with object data and the index of the object in the array is now the id… the 32-bit ids were of course 4x smaller.
All this being said, we do not claim the objects to be “globally unique”.
Edit: if I could go back in time though, I still might give this pattern consideration https://lucassardois.medium.com/generational-indices-guide-8...
Last call for passenger jll29 for flight seven dee eff eff eight two nine one, three eff eight nine, four zero four zero, bee eight see three, bee two zero zero seven six see zero dee dee ee ee.
Reuse of identifiers seems to be a theme in aviation https://news.ycombinator.com/item?id=37401864
You're gonna hate the e.g. Southeast Alaska route names, where the plane arrives from one location, unloads some passengers, loads others, then takes off for another destination entirely (specifically Anchorage->Juneau->Petersburg-Wrangell->Ketchikan->Seattle), and yet it's the same flight number the whole way.
They've competing constraints here: they need all flights to be uniquely identified while in the air, but also all flight identifiers need to be easily expressed over audio. So, even switching to e.g. hexadecimal could be difficult, because "A" can sound like "8". So maybe we use phonetic alphabet for those digits?
Oh but wait, this is to say nothing of the devices actually tasked with transmitting/receiving this info. If the software engineers correctly identified the risk here, then the flight numbers are being stored as two 16-bit integers inside the firmware, so there's plenty of headspace. But if not (say, they only gave 14 bits to the flight number, and 10 bits to the airline designator), then the firmware has to be updated. The FAA lists 648 air traffic control installations in the US, covering 19,000+ American airports. For what are probably obvious reasons, the lions's share of the equipment is not set up for firmware updates via a simple push mechanic, if its setup for remote update at all.
All of this to say, I agree, its dumb, but when this stuff was invented, the prospect of almost 20,000 airports in the US (so, probably on the order of 100,000 globally) likely seemed impossible. Future-proofing has a physical cost, and at the time, it may have been literally impossible to calculate the true cost.
British Airways frequently has flight in the air at the same time with the same flight number. For ATC these are typically identified with a letter at the end of the flight number like BA 123E or BA 345Y.
It is, and from what I hear it's routinely causing hiccups in the German freight train network with its sometimes really ridiculous delays that sometimes can add up to > 24 hours.
The neat thing is that the replaced person frees up their ID which can be reused by the new employee coming in, just easier that way.
Last year the UK ATC system crashed when it "encountered an extremely rare set of circumstances presented by a flight plan that included two identically named, but separate waypoint markers outside of UK airspace".
https://www.nats.aero/news/nats-report-into-air-traffic-cont...
I don't think that's even new for the big N us airlines. I noticed about 10 years ago that there were some united flight number used by not really related flights, or for both outbound and inbound for the same city pair.
I'm currently working on some airline code. It is amazing how much legacy code written in TPF is there and how restrictive it is. A lot of stuff is designed for straight up screen scraping.
Mental note to not work for you.