Hacker News new | ask | show | jobs
by aristofun 339 days ago
This is based on fundamentalky wrong assumption that software is something like a hammer or a bulldozer.

Software is more like a plumbing. It a) wears out b) requires maintenance c) people maintaining it is integrated part of the whole system.

5 comments

I think it depends on the project and the programmer. Code I wrote for a Nuclear Power plant is still there. Ditto for the code I wrote for the steel mill. And you can't find ATM machines w/ my code in them easily, but you see them from time to time. Code I wrote to go into the DoD's CAC card is still there, even though the hardware went through a new Rev a decade ago, so it surprises me to say this, but "yay, java?" Some of the code I put in Firefox to support TLS 1.1 & 1.2 is still there, but most of it got refactored out a while ago (and thank $DEITY Brian(?) replaced the old libpkix library that had been in Netscape navigator and then Firefox for about 20 years.) Much of the POTS network has been replaced since the 80s, but I'm told there are one or two switches I contributed to while at DSCCC are still around.

But on the other hand, my 1993 1 character patch to the Linux kernel was replaced in around 96 or 97. I hope to whatever benevolent Supreme being exists that the crap pyth*n code I added to Second Life has been replaced. No one still uses Palm Pilots or Handspring Treos anymore, so I doubt that code has much life in it. Virtually every web app I wrote is dead, but they were fun to write, so whatever. And the code I added to a couple of satellites is dead (though my ground station code is still alive.) I bet that some of the avionics code in the cockpit is hard to update as well.

So... it depends... my nuke plant code still has another decade probably and my old room-mate's anti-lock braking code will probably outlast us all. Embedded systems are probably more long-lived than the Facebook front page. Some are just hard to update cause you can't easily get to the machine, others are hard due to regulatory or compliance reasons.

What kind of company do you work for that is doing so much embedded/controls type work? I program hydro power plants and governors with a 30 year mindset and no guarantee I ever get access to the plant again once I sign off as complete
I worked for several companies: DEC and DSCCC for Telephony, IBM for Nuke Plants, DEC again for steel mills, Skybox, Planet Labs and Kubos for satellite, RSADSI for ATMs. Once people know you have embedded on your resume it's easier to get the next embedded job. But embedded work is thin and I've done a bit of web plumbing (reverse proxies, net controls, "converged" communication, etc.)

I've been lucky to avoid the "web framework of the hour" grind... and for the most part work on heisenbugs in net plumbing. Fortunately that part of the stack will invest a little time to avoid serious problems. But their timelines are shrinking to "just long enough to sell the company and it's IP" or about 5 years.

It’s just the lifecycle and halflife for nuclear reactor software is different:)
Please explain how a set of instructions for a computer can "wear out" and "require maintenance", Word 2007 still writes documents fine enough for me
Programs run on an operating system, the operating system runs on real hardware.

The real hardware gets old, wears out, parts become difficult and perhaps even impossible to source.

The operating system accumulates known vulnerabilities until it's no longer safe to connect to anything.

You can work around the latter two problems with emulation, but it's never the same--display technology if nothing else is different and presents differently. Emulation is dependent on the fidelity of the emulation. It's much harder to make it exactly cycle-and-timing accurate, though in most cases (like Word 2007) it doesn't matter.

The instructions might exist, but they are not runnable without other supporting infrastructure.

This also ignores programs that are wholly reliant on third party compute and instructions you have no access to that can be shut down and no longer available, like your MMOs.

The IBM 1401 is still being emulated to this day. It will never die.

I sometimes emulate a DEC VAX 11/780 running OpenVMS 7.3 on my phone.

Security vulnerabilities only really matter if you're going to have the system online.

George R.R. Martin still writes using WordStar 4.0 in DOS.

I remember reading a news story years ago about a guy who brought a vintage Mac from the 80s into the Apple Store to see if it could be a little faster. He had been using it for his accounting (or something) for the past 30 years.

Air gapped systems like these, with some degree of physical security, are pretty safe.

The sole purpuse of a “set of instructions” is to serve end users, to fulfill some business function. Without it it is useless bunch of symbols.

The set contain bugs itself that are getting revealed over time. But more importantly end users and businesses function evolve and change and if people have no choice but to adapt to such a “hammer” - it’s a piece of crap, not a software.

Software is and ideally must always be a hammer. It is only since the last 15 years that monopolist platforms try to trick us believing they are not.
To be fair, the surface of software has gone through the roof. Unix utils like `grep` or `find` can be hammers while a retailer's website with varying promotions, inventory and overall content needs to be maintained, moreso like a car.
The last 15 years was 2010. I’ve been in the industry since 1996 and programming as a hobbyist since 1986. Computers change, operating systems change. It’s not like I was using the original AppleWorks 3.0 on my Apple //e in 2010, or ClarisWorks from 1996 on my LCII.

While you can still buy Microsoft Office once and use it “forever”, I much prefer the $129 a year, 5 users deal with 1GB of online storage per user and each user can use office between their computers, online and on mobile regardless of operating system.

A desktop only office suite would do me no good as I go back and forth between platforms.

I reflect on this as a user: I've been a Windows user since around 1996, and most of my workflow is unchanged, I still use the ~same software (new versions of course, but those old versions would mostly still run). This could be even more true for Linux. Apple had a wilder ride, but you can always emulate. This isn't about user experience, more about a mindset, that newer generation seems to tragically forget. Once you buy a service, you give up control and ownership. Same way how artists, works and prices constantly change on streaming platforms. On the surface it seems easier, but...

For your example, Microsoft can alter that price any time it sees fit, discontinue platforms you use, alter the interface drastically or cut a crucial feature in tomorrow's update... I wouldn't cope with such, and am sorry for those who must.

And when that happens, LibreOffice, GSuite and even Apple’s iWork suite can open the documents.

Word for the Mac has been in continuos production since 1986. It made through a 16 bit MacOS (I’m yada yada yada’ing) , to 32 bit “clean” System 7 on a 68040, to classic MacOS PPC to native OS X on PPC Carbon 32 bit, to x86 64 bit OS X APIs to ARM.

Would you really want to use Windows 3.1 Word in 2025? One of the major issues with Windows is that it carries stoubf cruft from 1992.

There are for instance still a dozen ways to define a string in Windows programming depending on the API and you have to convert between them

Software is a design. In the same conditions it never wears out. As conditions change it tends to work less and less well unless modified, as expected.
First time I read (c). That's the real truth, thank you for putting words on it! I understand way better people and places where I've worked.