https://dev.to/mdchaney/cobol-dates-may-20-1875-and-disinformation-5ggh
- There is no “date” data type in COBOL. Dates are stored however the programmer wants, but usually numeric character strings
- There’s no “default” date, even if there were such a data type
- Even if there were a default, 1875 would be a bizarre choice
That (obviously) doesn’t mean Elon Musk is right. It just means that this explanation of it being some magical COBOL epoch value is wrong. What’s more likely is that the Social Security database is very old and has a lot of iffy data in it.
My guess is that it contains everybody who has ever had a social security record, including all the duplicates, all the typos, and everything else. At some point there were probably hundreds of thousands of records that were transcribed from paper into a computer, and it was considered safer to keep the iffy data and make a plan to deal with it later, vs. remove someone from the database who should legitimately be there.
I would also imagine that the systems that take the records out of the DB probably have filters in place that remove the (known) bad records before they’re used.
Isn’t “embarrassing and dangerous” their whole strategy?
The question is, how do you not know the age of a recipient? I feel like that’s kinda required to know, no?
There are many people who were born in developing nations during times of war who do not know their exact age. They usually do have an idea of a range though.
Ah, well that makes sense. Thanks for clarifying.
learn Cobol you uneducated teenagers
SUBTRACT DATE FROM YEAR GIVING AGE.
It’s all about WORKING STORAGE if you ask me.
I keep hearing that gen Z is actually pretty shit with understanding things outside GUIs.
And now I’m watching it actively destroy my country.
I get this feeling too, but then again can we blame them? With all the locked down tech these days you really have to get out of your way to learn. And in most cases it works well enough. Whereas people growing up between lets say the 1970-2000s had to muck around with their tech to get it to work. Thus learning the intricacies while using it.
How dare you question the wisdom of Big Balls and his peers
I’m gen z, I use Vim, and I voted for Kamala. Guess all those VS Code kids voted Trump.
Less of a generational problem, more of an educational one. Selfish, badly educated grifters that got pushed into high offices can be of any age. Musk also didn’t recognize SQL when he looked at it, which is arguably even more funny.
More of a late gen z, gen alpha thing.
The actual payment system stops payments automatically at age 115 and requires manual verification to restart. The database that is being reported is not even a report of who is getting paid.
This is just dramatic, public evidence of the arrogance and incompetence of DOGE from down to his racist younglings.
For a while, I thought they would at least be good at technology. This episode shows that even that is not true.
How he chose this elite group of chuckleheads is an eyebrow raiser. Other than racism, they seem to have no credentials at all. I mean, on brand for this administration I guess.
Found the link to the SSA page describing the policy which took effect in 2015.
115 sounds too late imo, payments should need manual verification way earlier
There are other verification procedures in place as well. This is something like a failsafe.
If that’s what you want they should be staffing up instead of firing.
Absolutely, DOGE is obviously committing crimes doing what they are doing
Too bad he let go of all the employees that would be responsible for that manual verification.
They’re going to need lots more people going around talking to old people because you don’t want to rely on public records
Conspiracy theory: They know this, but being able to claim to their followers, with official records to show for it, who know NOTHING about programming, is an easy, effective win for them. They can claim fraud to their gullible audience and now have records they can point to and say “LOOK! THEY’RE GIVING DEAD PEOPLE SOCIAL SECURITY MONEY!”
This is why you come up with a hypothesis before running an experiment and collecting data. Otherwise you can pick a pattern in the data to propose just the right hypothesis.
Jesus fucking christ the interns who have neither seen nor heard of COBOL have also not encountered the concept of a sentinel value used as a fallback/default.
Cant wait till 2038!
Date time types have long since been based on a 64 bit number , at least in Linux. However the old 32 bit date time types are still there so older programs won’t break, and probably on emdpbedded systems.p. So it comes down to the apps: how many old apps or old embedded systems will still be around?
How many cobol systems are still around in 2025. If it works, don’t fix it. And I have a feeling a lot of things will need fixing in 2038 lol
It will be interesting to see that play out. The thing is the 238 prboem spas long been solved just like the y2k problem was.
The Linux datetime types were moved to 64 bit values long ago, so this problem is thousands of years out. The old 32 bit values was a limitation of older systems not handling larger values, but almost all hardware today is either 64 bit or has hardware support for 64 bit data. You mainly have some older embedded systems
But the legacy 32 bit APIs are still there so it doesn’t break backward compatibility. You have huge ecosystems of software that still use these APIs and may still handle datelines as 32bit. There’s no way to find them all, much less make sure they’ve been updated.
Just like y2k, 2038 will have been a long solved issue, that may still exist due to ancient or poorly written applications. All you can do is a huge effort of trying everything to find any remaining issues before they cause problems. I’m optimistic because y2k was a problem cased by every application handling their own dates, whereas for 2038 its cause was in an underlying data type that has long since been fixed. Surely all applications will have been rebuilt to the new API in that 20 year or so period, right? Right?
I expect governments to set up own time servers and reset it to 1970 before upgrading their old Win XP machines.
What do you expect? most of the guys in “DOGE” weren’t even alive on 9/11 I’m a bit surprised that they still have something in COBOL, maintenance probably costs o fortune, good luck finding young COBOL devs
I’m ready to learn COBOL. I will take up the torch. If you know good places to start, let me know. Last time I looked into it it seems way more involved than running stuff like Python, Java, and C.
I see, you want that that Lamorghini, well if you really want udemy is always a good start. Personally the difficult part for me when learning a new programing language is not resources, it’s the motivation to keep do it and I usually need a real project to work on. (10 years + dev)
Usually you find on github “awesome-XYZ” repos (ex: awesome python, awesome c, awesome go), but for cobol, most of the projects are dead
https://github.com/loveOSS/awesome-cobol?tab=readme-ov-file#email
Is being a COBOL dev something that can get you jobs?
I’m pretty good at FORTRAN and would love that kind of “you have invaluable skills so we can’t get rid of you for being queer” gig.
It’s a niche, most of the companies use something more modern, easier to find devs, but there are still some that have to mentain that old code while they probably at the same time try to replace it with some other more common language (Java, C++, Rust, Go), I think it’s still used by some legacy systems in governments and financial institutions
It’s like knowing an extinct language, most of the time is useless, but if someone needs your skills they better pay good for it.
These are the same interns that are pushing code in production, right?
Teenage programmers can understand legacy code. These ones didn’t. Don’t dis teen coders.
The issue isn’t inherently age it’s just time and experience, understanding different coding patterns and paradigms that have changed over the years etc. Even someone who’s been coding every day from ages 14-20 can’t have the same knowledge and experience as someone who’s been working with software since the 90s or earlier. Granted, there will always be brilliant people who even when lacking experience are more talented and skillful than maybe the majority, but that is uncommon. I’m only in my late 20s. And I remember in college there was a huge diversity of skills, from “are you sure this career path is really a good idea for you?” To “holy hell how did you do all of that in one hackathon?” But even for those really smart folks, they aren’t just going to inherently understand all the different ways to organize and structure code, all the conventions that exist, and more importantly why those methods and structures exist and the history that informed them. I’m not saying you need on the ground experience (although, I’d say many people do, as many people can’t really internalize things without direct exposure), but there’s just not enough time, literally, in the handful of years that is childhood and teenage years to absorb all that history.
Anyway, what I’m getting at is that, yes, I agree that the problem isn’t inherently about being teenagers but I do think it’s a valid criticism that it’s kind of ridiculous to have such young folks leading this kind of project given it’s literally impossible for them to have the same amount of experience as software vets. It’s also valid that young people are capable of seeing things in very new ways, since they aren’t weighed down by al that history. But that’s why diversity is useful especially for such a monumental project as this.
How many teens you think can actually read and understand legacy languages like FORTRAN and COBOL? Let alone a complex codebase written in them?
I studied COBOL a bit in college and it’s not exactly hard to read short snippets if you understand other languages, but good luck wrapping your head around anything remotely complex and actually understand what it is doing without having someone who understands the language. Hell, 15-20 years on and multiple languages later, my eyes still cross trying to read and grok COBOL. The people supporting those old code bases get paid well for a reason …
I’m familiar with a dozen or so teenage romhackers. Assembly surely harder to get the big picture of than cobol, but they’re making incredible changes to 30-yo video games.
Learning to COBOL is not itself that hard.
Understanding decades of “business” logic is.
It isn’t WHAT it is doing, it’s WHY it is doing it that makes these systems labyrinthian.
Also afaik they don’t get paid that well which is part of the problem.
I don’t know how many teenage programmers you have interacted with recently, but they are generally just learning the basics, learning core concepts, experimenting, etc…
There is a huge gap between making small, sometimes very cool and creative even, projects and understanding a giant legacy codebase in a language that is not taught anymore. I mean, even university grads often have trouble learning legacy code, much less in COBOL.
You wouldn’t say your average teenage cook could make a gourmet meal for a house of 50 people 😅 not a dis, just they haven’t had the time to get to greybeard level yet
I would imagine these teens didn’t learn through the conventional educational channels.
this is why, if they heavily modified the code in such a short time and they couldn’t understand it: it proves there was a previous data breach and they’re just installing the pre-written patches… the smoking gun that i can’t explain to anyone
That makes way too much sense.
I think it makes sense that people who don’t have actual experience in making projects in a specific language won’t be aware of details such as the value 0 being the default in a certain kind of field in a certain language which makes it a good flag for “data unknown”.
This is not a problem specific of teenage programmers - it is natural for just about everybody to not really know the ins and outs of a language and best practices when programming with it, when they just learned it and haven’t actually been using it in projects for a year or two at least.
What’s specific to teenagers (and young coders in general) is that:
- They’re very unlikely to have programmed with COBOL for a year or two, mainly because people when they start tend to gravitate towards “cool” stuff, which COBOL hasn’t been for 4 decades.
- They haven’t been doing software engineering for long enough to have realized the stuff I just explained above - in their near-peak Dunning-Krugger expertise in the software engineering field, they really do think that learning to program in a given language is the same as having figured out how to properly use it.
I think it makes sense that people who don’t have actual experience in making projects in a specific language won’t be aware of details such as the value 0 being the default in a certain kind of field in a certain language which makes it a good flag for “data unknown”.
The whole “COBOL’s default date is 1875” thing is just a lie. COBOL doesn’t even have a date type.
So the problem doesn’t have anything to do with COBOL, someone just made it up
The way I’m reading is that they were holding a date related value in an unsigned integer field, so the start date (corresponding to 0) was a convention (whether internal or broader than that, I don’t know) and they chose 0, the default initialization value for such fields as a flag for “no information”. Back in the day there wasn’t all that memory and storage to go around so I bet this was a 1 byte field holding a year value.
Those choices in a system to be used for Social Security for a whole nation make sense in software design terms if you’re having to come up with your own solution for storing dates in as fewer bytes as possible in a language with no built-in date type, but present day teenagers would have never have been in such a situation because there are no currently fashionable programming languages without date types, space isn’t as constrained anymore and they don’t have experience in the kind of projects were one has to store records for hundreds of millions of people.
my brother taught me to code when i was 6, so at 19 i had 13 years of experience already. At 6 i was mostly doing simple stuff like qbasic, vb6, but still it adds up. I’m not saying I’m a great coder, not by a long shot, just that I was experienced as a teenager. I assume a lot of these teenagers are much better than i was.
I taught myself coding at 14 on a ZX Spectrum 128 and was doing Assembly within 2 years.
By now I have over 3 decades professional software engineering experience, almost 4 decades in total if including the stuff I did non-professionally.
Looking back, I knew how to make programs (even made a Minesweeper for the Spectrum in Assembly) but that’s not at all the same as knowing the good or industry standard practices in the languages I used.
Whilst it should be way easier now to find those things out (there was no Internet back when I started), in my experience one needs to actually have been coding in a spaghetti way long enough and in enough projects you can’t just ditch if they get too messy to actually feel the need to learn those better ways and hence go search for it.
Also I bet that it’s a lot harder to find advanced tutorials on COBOL on the net from people with actual experience doing it professionally for a couple of year than it is for, say, Python.
I’ve been surprised multiple times by coworkers who don’t know the significance of midnight January 1st 1970… We support an embedded Linux device, among other things…
Honestly, if you make it to 150 you deserve the money
LMAO watch the US be saved by an inability of Muskys frat bois to understand COBOL
I dont even program and i could’ve told them it was probably a placeholder or default value lol “durrrrrr lot of people in this database were born at the exact same time on the same day in the same year that predates electronic databases, gotta be fraud!!1!1!11”
Also predates social security. It’s the long con for sure.
2016-2020 was the age of too stupid to break everything. Now we’re staring down the barrel of “The files are in the computer?” But the entire US government is the computer.
More likely they nuke it due to that lack of understanding.
They’d probably just delete the Cobol code since “nobody would use that old stuff anyway”.
In before Musk says “You think the government uses COBOL?!”
Not only do many important government systems ultimately rely on or make heavy use of COBOL…
So do many older private companies.
Like banks. Account balances, transactions.
Its actually quite a serious problem that basically nobody who needs to take seriously actually does.
Basically no one is taught COBOL anymore, but a huge amount of code that undergirds much of what we consider ‘modernity’ is written in COBOL, and all the older folks that actually know COBOL are retiring.
We’re gonna hit a point where the COBOL parts of a system to be altered or maintained, and … there just isn’t anyone who actually knows how to do it.
Yeah, I’ve been tempted to try this route, but you’re really pigeonholing yourself. Even if there’s always wrk, I can’t imagine only working with cobol the rest of my career.
Even worse, the places still using this are very heavy in process, with many undocumented dependencies among many undocumented workflows and business processes. Modernizing COBOL is not a coding problem: it’s a mammoth project management, coordination, and paperwork project that also has a little bit of coding. And its not like you can write clean code, you need to write essentially the same tangled mess of accumulated changes over decades because there’s no way of knowing everything that might break
I hereby nominate you to be the new head of the SSA.
You get it, exactly.
COBOL itself is a fairly minor part of the problem, the real problem is the retiring COBOL coders are the only ones with enough institutional knowledge, broad and specific, to keep the engine from grenading and fucking wheels from coming off the car when it hits a bad enough pothole.
But management and C Suite are apparently homo superior, fully confident that none of that really matters, they’ll just keep throwing money at it until its fixed, and failing that, laying off everyone, who care in the end, they get a golden parachute when it all burns, everyone else can FOAD.
My understanding is that even if you learn COBOL, you’d struggle to understand legacy systems since they have their quirks from a bygone era
That is absolutely true as well… though this may be just a personal anecdote, it seems to me that the few COBOL coders I once knew would be amongst the most likely to keep a solid documentation of their own systems.
The problem with that though, is that their bosses are almost always too stupid to ask them for such documentation before they leave/retire, or to bother to preserve it when the exiting COBOL programmer gives it to them, because coding is magic to them, and you’re either a good magician that can do the thing, or you’re not.
Upper management / C Suite seems to never understand why the term software engineer was/is used.
I don’t think the government uses COBOL. I know the government uses COBOL.
It doesn’t matter what I think or know, the government uses COBOL.
He would dismiss COBOL and try to prove that he is a super cool geek with a deep knowledge of DnD and gaming culture. So more like:
“COBOL? Such a language doesn’t even exist unless you think Kobolds are real! Hahaha”
I can’t wait for them to discover a bunch of people who are 9999 years old next.
Or supposedly received 9.223.372.036.854.775.807 dollars (64-bit max int).
In the legacy world we just call it the HIGH_DATE constant.
In my experience in the legacy world we have the isHighDate function which not only checks the constant, but also 5 other edge cases where the value isn’t HIGH_DATE but should be treated as if it is.
tbf it’s only embarrassing if you’re capable of embarrassment.
More specifically, they didn’t find anyone receiving social security who were 150 years old because they didn’t prove that they were receiving anything as that’s not the purpose of that database.