Live data from Hacker News

Ask HN: Oldest code you have written that is still in use?

news.ycombinator.com

321–330 of 363 posts

Re: Ask HN: Oldest code you have written that is still in use?

#321

Earlier quoted context omitted.

Come on... Say all that and not mention the name of the map? Is this 'petrosianshina', the clone of 'Vampirism Fire'? Being russian I can only name this as something with millions of subscribers and is not dota.

It was called Pudge Wars! The DotA 2 version is here: https://steamcommunity.com/sharedfiles/filedetails/?id=29683... where you can see its subscriber count (and my name cited as the originator)

Oh wow. That's one of my favorite maps too both in TFT and in dota2 :) Thank you for your effort!

Re: Ask HN: Oldest code you have written that is still in use?

#322
2002. Intranet for a major auto maker. Still going strong. Large percentage of the original management and accounting code intact. Still in development.

1999. DynamicIP tracking script from the dial-up days. Tiny but it's been telling me where my home internet is for 17 years.

Re: Ask HN: Oldest code you have written that is still in use?

#324
post #315
post #279

Earlier quoted context omitted.

Certainly, backward compatibility is critical and has always been a weakness of mine. I've always been an idealist there. But in xkas' case, this was code from before I really learned how to program; let alone design a proper parser. This would be like asking for strict compatibility between Linux 0.01 and Linux 3.0. I understand how SMWC became trapped in a cycle of using xkas v06, but any new projects really have n…

I wasn't trying to comment directly on the specifics of xkas - I just think this is a perfect illustration of how backwards-incompatibilities that means users can't just upgrade and keep working introduce friction against upgrading, and once you get too much friction significant portions of your userbase will stop upgrading at all. I think this lesson is really valuable in a wider context than xkas. Since you mention…

> I just think this is a perfect illustration of how backwards-incompatibilities that means users can't just upgrade and keep working introduce friction against upgrading, and once you get too much friction significant portions of your userbase will stop upgrading at all.

I definitely understand and respect your point.

In fact, I've lost about 80% of my userbase (about 80,000 users) to older versions (and forks galore) of my emulation software. And that's mostly due to lacking backward-compatibility with older game ROM formats.

I've since made efforts to accommodate using older media types, but the damage is done, so to speak.

> I think there is actually a very good chance that an a.out binary compiled for Linux 0.01 would still work today.

... seriously?? Jesus.

I don't even see how it's possible to produce good software that way. We don't know what we really want until we iterate over the design a few times. At least, that's the way it is with me. My first drafts have never been anything close to my ultimate designs.

You should see how amazingly better my GUI abstraction library (think wxWidgets but more like Qt with reference counting memory management and C++11 features) has gotten since the first version. I couldn't imagine being stuck with that first version in the name of backward compatibility. I'd rather be the only user of it than have that first version be it, and be as popular as wxWidgets is today.

I mean, I'm very much ashamed of xkas v06, and wish my name wasn't attached to it.

Re: Ask HN: Oldest code you have written that is still in use?

#325
My first "big" application I wrote and got paid for was a MS Access SQL VB hack I wrote for a company I worked for.

I fully expected the thing to crash in a few weeks after I left and they would move on to something else, but no 8 years later and I'm told it is still running strong.

Re: Ask HN: Oldest code you have written that is still in use?

#326
post #187

I posit if you want to make sure your code survives you, write video game code. Nevertheless, my own examples are all non-games. In the early nineties I wrote a program in Turbo Pascal to manage grades and print report cards, I heard one elementary school in my home town was using this until 2012. On one of my first web programming jobs, I made a cold fusion-like template interpreter and ecommerce engine in C, that w…

> I posit if you want to make sure your code survives you, write video game code. I dunno, firmware seems like a pretty safe bet too. I wrote seek algorithm firmware for Quantum's Atlas series of SCSI disk drives in the late 1990s, I suspect there are still a few of those spinning out there somewhere.

    I wrote seek algorithm firmware for Quantum's Atlas series of SCSI disk drives 
Are you aware of anything at all like that which is opensource/published? This sounds like something that could be fascinating to read.

Re: Ask HN: Oldest code you have written that is still in use?

#327
post #324
post #315

Earlier quoted context omitted.

I wasn't trying to comment directly on the specifics of xkas - I just think this is a perfect illustration of how backwards-incompatibilities that means users can't just upgrade and keep working introduce friction against upgrading, and once you get too much friction significant portions of your userbase will stop upgrading at all. I think this lesson is really valuable in a wider context than xkas. Since you mention…

> I just think this is a perfect illustration of how backwards-incompatibilities that means users can't just upgrade and keep working introduce friction against upgrading, and once you get too much friction significant portions of your userbase will stop upgrading at all. I definitely understand and respect your point. In fact, I've lost about 80% of my userbase (about 80,000 users) to older versions (and forks galor…

I don't even see how it's possible to produce good software that way. We don't know what we really want until we iterate over the design a few times. At least, that's the way it is with me. My first drafts have never been anything close to my ultimate designs.

After you've been burned a few times, you start to get a feel for building interfaces that can be maintained while the entire design behind them is switched out. If you do need to change the entire interface, sometimes you end up supporting old interfaces with a shim layer that translates them into calls to the new interfaces.

For example, the a.out binary format supported by the original versions of Linux has long since been superseded by the ELF format, because the deficiencies in the old format became too much to bear - but that doesn't stop the latest kernels from being able to support that old format still.

Re: Ask HN: Oldest code you have written that is still in use?

#328

Earlier quoted context omitted.

That link doesn't work for me. I'd love to read more about this system. Are there any other links you know of?

I left the company in '87 and lost contact with them years ago. The system was 8085 based, ran a preemptive RTOS written in PL/M and assembler derived from RMX-86. The network was optically isolated RS-485 9600 baud. It was configured using Template Block programming, where the blocks acted like little HP RPN calculators that were linked together to build a control sequence. Its primary distinction was its ability to…

Very interesting, thank you. What do you do now?

Re: Ask HN: Oldest code you have written that is still in use?

#329
post #327
post #324

Earlier quoted context omitted.

> I just think this is a perfect illustration of how backwards-incompatibilities that means users can't just upgrade and keep working introduce friction against upgrading, and once you get too much friction significant portions of your userbase will stop upgrading at all. I definitely understand and respect your point. In fact, I've lost about 80% of my userbase (about 80,000 users) to older versions (and forks galor…

I don't even see how it's possible to produce good software that way. We don't know what we really want until we iterate over the design a few times. At least, that's the way it is with me. My first drafts have never been anything close to my ultimate designs. After you've been burned a few times, you start to get a feel for building interfaces that can be maintained while the entire design behind them is switched ou…

To me, legacy code has cost. Great cost.

You can't just leave old code alone and the features remain. Any time you go to restructure some code, or support some other mode, or do some other kind of action, it ends up affecting this old code and you have to go and make changes to it as well. Then that old code breaks on a new version of the compiler, so you have more fixes to make. And it increases compilation times, binary sizes, and lines of code. It's another vector for malicious attacks. It's more to keep mentally in your head all at once.

I suppose it's one thing if you have a steward willing to take over, say, the a.out branch of the binary loader. But it's quite another in my case where I'm the sole developer of my software, and no one shows any interest in maintaining the legacy UI, or versions of the emulation core that focus more on performance at the expense of compatibility, so I have to drop that stuff. (Yet it is a bit disappointing when people are willing to fork the entire codebase instead to achieve the same goals, but I digress.)

Again, I agree with what you're saying, and I'd say Linux or Mozilla Firefox or Qt certainly has the manpower for this sort of thing. But as a solo developer, I can see why people would sacrifice this backward-compatibility from time to time.

I'm not sure on your point about getting a feel for interfaces. Certainly, it seems that every year or two, I feel like I've made great strides and am finally on the cusp of stable interfaces. Yet invariably, a year or two later, I look back and think the same thing again. I've come to the conclusion that we never stop evolving and that thinking we've reached perfection is always self-delusion. But, maybe I'll get there in the future. I certainly hope so.

Re: Ask HN: Oldest code you have written that is still in use?

#330
post #329
post #327

Earlier quoted context omitted.

I don't even see how it's possible to produce good software that way. We don't know what we really want until we iterate over the design a few times. At least, that's the way it is with me. My first drafts have never been anything close to my ultimate designs. After you've been burned a few times, you start to get a feel for building interfaces that can be maintained while the entire design behind them is switched ou…

To me, legacy code has cost. Great cost. You can't just leave old code alone and the features remain. Any time you go to restructure some code, or support some other mode, or do some other kind of action, it ends up affecting this old code and you have to go and make changes to it as well. Then that old code breaks on a new version of the compiler, so you have more fixes to make. And it increases compilation times, b…

To me, legacy code has cost. Great cost.

Certainly, but it's the kind of cost that comes with having a lot of users, so it falls into the "nice problem to have" basket. If you've got no users, you have a lot more freedom to throw things away.

I understand where you're coming from, because I also do mostly-sole-maintenance on a large codebase with all the issues that come with a 20 year legacy. One strategy that can work in such a situation where you can't maintain perfect backwards-compatibility forever is to boil the frogs slowly - gradually deprecate and remove features over a longish time frame, because a single changed or missing feature is easier to adapt to for the userbase than a whole slew at once (many people probably don't even use the feature and won't notice).

Post reply on HN