taylor.town about now spam rss

Kyle Explains "Legacy Software" to the Aliens

Hello? This is Kyle.

Oh, you again. It's almost nine o'clock in the morning! Why are you calling so early?

Okay, okay, fine. I've got ten minutes until standup. Let's make this quick.

Legacy software? Yeah, it's kind of like dark matter, ya know? It's all around us, but nobody knows how it works.

Oh, you guys know how dark matter works?

Oh, very interesting. I never would've thought it was that simple.

No, no, legacy software actually isn't anything like that. It's more like all the old junky software that nobody wants to touch anymore.

Of course, it does important stuff! It's just that nobody knows how to make it go faster when consumer demand increases.

No, the old languages are not slow. It's the old hardware that's slow. But the old languages don't run on the new computers.

Oh yeah, the programs printed onto physical media last a long time, especially video games. They usually carry all their dependencies, and the hardware has been well-documented, with permission or not.

Nah, we don't distribute full copies of things anymore. Everything "just works" nowadays. A modern web app can probably stay up for weeks without human intervention.

No, you're confused. They run in browsers, which run on top of the operating systems.

Yeah, the general public has just kind of accepted that all the operating systems are broken. And nobody can make them much better because they're constrained by decades of bad architecture decisions and continuous hardware variations.

No, the browsers are almost worse than the operating systems. But that's what we use for most of the important stuff nowadays.

Yes, always online.

No, the people without internet generally have no money, so it's too unprofitable to think about them.

Of course not. Peer-to-peer tech is pretty much only used for video calls and piracy.

I think you're talking about "the cloud." Nah, that's a whole separate thing.

Well, of course, you could run the old languages on the cloud. But I think it's mostly too painful with modern tech.

Yeah, we've known about virtual machines for almost a century. We can also cross-compile platforms and emulate many of those old machines on FPGAs. But we're all moving to containers now.

Hmm. I think we call those "academics." We don't use their new stuff because it's too impractical. To be honest, it's unclear whether or not they use their own stuff.

No, the practical stuff doesn't really work either. The proprietary software is somehow perpetually understaffed with exponentially growing teams.

Ah, I see the confusion. Much of the proprietary stuff was built on top of the free/open stuff, which was originally designed by the academics, which is now maintained by tired hobbyists.

No, free/open software doesn't count as public welfare. Governments only contribute when it involves surveillance or military tech, which they try to keep secret. Otherwise, they keep using the old languages way past the expiration date.

Sorry, no, I'm not following. I already told you. The old languages don't really run on the new computers.

Why not use the old languages? Ha! Dude, nobody uses those languages anymore! They don't have any of the new libraries.

No, we don't port over the new libraries because it would feel too "clunky."

Of course, we try to make the languages less clunky! It's called "ergonomics." But whenever we add ergonomics to a language, it becomes clunkier.

No, we can't rewrite the legacy software in a new language because the problem is usually too dangerous or complicated.

I guess they got lucky? Nobody today would dare tackle those same problems in the same languages.

Yeah, we have cleaner languages.

Yeah, we have way faster computers.

No, shipping products take about the same amount of time. Well, we don't really finish software anymore, so it's hard to compare.

No, everything feels just as snappy. Load times have remained about constant for decades.

No, we actually have way more developers now.

No, we have about the same amount of bugs as always. Maybe more.

Uh, we don't need evidence. Everybody knows that programming language preference is just a matter of taste.

Dude, you're not listening. The new languages are so much better! It's not about performance, nor dev velocity, nor solving problems, nor taming complexity, nor labor productivity, nor energy consumption, nor quality control.

So how do we know software is actually getting better? Dude, just look at the new graphics!

No, I think game devs actually use old languages because the old languages are a lot faster.

Emulators? No, no, that doesn't apply to legacy systems. We just do that for games.

Nope. Hobbyists write and maintain all of that outside of their working hours.

Nah, we owe pretty much all of that to faster GPUs.

No, the internet doesn't really use that much GPU. It's mostly static content.

Yeah, the content is static, but nothing lasts, you know?

Yes, we know about content-addressable storage.

Yes, we have backups.

Yes, we have documentation.

I totally see what you mean, but it never works in practice. The old stuff eventually stops working for some reason. You can't just run an old version and expect it to work like that. Computers are super unpredictable.

Yes, deterministic.

No, that wasn't a translation error. Unpredictable. The computers never do the things we want or expect them to.

No, the computers aren't changing on their own. Yet.

Stop changing things? Not a chance. If we stopped changing, then everything would become one big legacy system!

Uh, SQL is fine, I guess. Why would we change it? We just use ORMs to compile to SQL anyway.

Nah, the internet servers don't need to run that fast. They just need to scale and keep up with a dynamic deployment schedule.

Nope, we have no clue how to scale systems or deploy consistently.

Nah, we just rewrite the system in a faster language when that happens.

No way! I want to pretend that computer memory doesn't exist until it's already too late.

Sorry, no more questions. I'm two minutes late for standup. Humanity is deprecating TypeScript next year, so we're migrating our proxy server to HypeScript, but we just found out it's incompatible with our orchestrator, so we have to switch cloud providers. Please don't call this number again.