Live data from Hacker News

Bitrot

surfingcomplexity.blog

11–20 of 22 posts

Re: Bitrot

#11
post #7

You're telling me. I'm into vintage / retro PCs and use IA to find drivers, manuals, and so forth. There are some manufacturers who have gone out of business and aren't completely captured by IA. Some of the worst offenders obscured their downloads behind "CGI scripts" (indirect links requiring server-side code) rather than direct downloads. Organized, searchable, and comprehensive museum/archiving of digital artifac…

What's "IA" ? (For me it's "Intelligence Artificielle", but what you say does not make too much sense. Do you have a super-fancy way to search for drivers?).

[deleted]

Re: Bitrot

#12

To be fair to them, they lived in a different world. The 60s, 70s, and 80s were a very safe time in computers. Virii and "hacking" ranged from curiosities to pests, but nothing particularly serious. Today we've gone well past document-embedded-virus payloads and XSS and infected USB sticks to log4j, rowhammer, and spectre. And we've barely even scratched the surface. Just wait until JSON and XML exploits (i.e. exploi…

Some of those classes of problems (log4j) are exactly why some people refuse to use external libraries or at least not pulling them in automatically for each build. It's not unexpected problems, it's expected problems that comes along. Everyone knows it will happen sooner or later but chooses to benefit from others work because that is how society grows. This however comes at a cost. And society is mostly prepared to pay the price because of the benefits.

Bitrot is also one of the things we have been fighting for a long time. That is why we have new file systems that scrubs the whole disk now and then, checking for bitrot and repairs while it's still possible.

Edit: Saw now that the article isn't even about bitrot. In my world bitrot is when data on the disk changes without anyone doing anything to it. A bit flips from 1 to 0 by no help from humans. This can be corrected automatically with checksums and backups. Against humans changing things they don't understand nothing can help you :-)

Re: Bitrot

#13
post #8

> Legacy systems have legacy dependencies, and run in legacy environments. In my experience, a sort of opposite of this sentence tends to be true. Modern systems have too many dependencies, most of the time needlessly so, but still required. I recently used a Python package that required a specific version of the pandas behemoth to run, but it was only used to parse a date. Absolutely ridiculous. On the other hand, t…

I don't think I've ever used the phrase "legacy system" to something from the 90's, even. Mostly it's software in that twilight zone of 5-10 years old. Built with "modern" expectations and dependencies, but every system around it has migrated to a new and shiny tech stack, and all the subject matter experts are long gone...

Re: Bitrot

#14
post #8

> Legacy systems have legacy dependencies, and run in legacy environments. In my experience, a sort of opposite of this sentence tends to be true. Modern systems have too many dependencies, most of the time needlessly so, but still required. I recently used a Python package that required a specific version of the pandas behemoth to run, but it was only used to parse a date. Absolutely ridiculous. On the other hand, t…

I don't think I've ever used the phrase "legacy system" to something from the 90's, even. Mostly it's software in that twilight zone of 5-10 years old. Built with "modern" expectations and dependencies, but every system around it has migrated to a new and shiny tech stack, and all the subject matter experts are long gone...

> every system around it has migrated to a new and shiny tech stack, and all the subject matter experts are long gone

This seems to be an unfortunate property of software related to web development and similar stuff. Fortunately, scientific computation moves at a more reasonable pace. There are new algorithms every day, but no new "frameworks"!

Re: Bitrot

#15
I think the problem is not that software somehow would become worse as it ages. But that tons of software is and has been pretty crappy to start with, and to lesser degree has been worsened over time by modifications. At the same time our quality expectations for software have been dramatically increased over time, making the original poor quality even more apparent.

That viewpoint also partially explains Djikstras opinion; the software he made can be presumed to have been above average in quality so therefore it probably also aged better than most.

Re: Bitrot

#16
post #2

Imagine your database is a sensor network instead of some schema-ful/typed data store. Field operators unbeholden to you keep adding, removing, or updating sensors. Your data format evolves underneath you, and you behave more like a magic carpet pilot than a builder of things unbreakable. You’re attempting to store the flight path as best as you can, update configurable sensors for the most profitable reads, but what…

I have no idea what it is you just said

Re: Bitrot

#17
post #2

Imagine your database is a sensor network instead of some schema-ful/typed data store. Field operators unbeholden to you keep adding, removing, or updating sensors. Your data format evolves underneath you, and you behave more like a magic carpet pilot than a builder of things unbreakable. You’re attempting to store the flight path as best as you can, update configurable sensors for the most profitable reads, but what…

I have no idea what it is you just said

Indeed, I'm also half convinced that your parent comment is some sort of GPT-3 generated stream of blandness.

Re: Bitrot

#18
post #2

Imagine your database is a sensor network instead of some schema-ful/typed data store. Field operators unbeholden to you keep adding, removing, or updating sensors. Your data format evolves underneath you, and you behave more like a magic carpet pilot than a builder of things unbreakable. You’re attempting to store the flight path as best as you can, update configurable sensors for the most profitable reads, but what…

I have no idea what it is you just said

Some software is made to solve constantly-changing problems and thus constantly evolves too. If the software does not evolve to follow the world, then it does bitrot unlike what Dijkstra asserts.

Anecdotally, I've seen software being developed for the sole purpose of an event that would last a couple hours, software whose client needed it for the evening when calling in the morning, etc. It's a form of bitrot too: the code, event-specific, is as useful to us as the memories of said event a couple years in.

Re: Bitrot

#19
post #2

Imagine your database is a sensor network instead of some schema-ful/typed data store. Field operators unbeholden to you keep adding, removing, or updating sensors. Your data format evolves underneath you, and you behave more like a magic carpet pilot than a builder of things unbreakable. You’re attempting to store the flight path as best as you can, update configurable sensors for the most profitable reads, but what…

I have no idea what it is you just said

NKosmatos pointed out in another reply that this post was about software rot, and not data rot.

From the Wikipedia article he linked for software rot:

“[software rot] is not a physical phenomenon: the software does not actually decay, but rather suffers from a lack of being responsive and updated with respect to the changing environment in which it resides.”

The software doesn’t physically rot. Its relationship to something (the world) does.

I attempted to draw a parallel of this to a database because, for many folks, the immediate environment of their app is a database of some kind. The world is kind of like a database, too, because it is read from and written to. But unlike an in-house data store, it changes without regard for dependant applications.

In the second paragraph I attempted to distinguish two kinds of programming endeavours. One is like chopping wood for fire, the other like retrieving and then cutting a hard substance. Whatever the purpose of the latter, it takes planning, experience, and the result is both intended to last a long time, and to be versatile. But the former is cheap and short and for the moment. You’ll have to do it again, many times, and in slightly different ways, depending on where you are, who you’re with, what the weather is like, and so on. Dijkstra’s seeming dismissal of rot may be directed against the latter, but not the former.

I guess my third commentary is that many, many software systems are not designed at the time of their construction, because they are sudden and their manifestation is opportunistic. This lack of design at the point of construction is an implicit assertion against the expected lifetime of any such system. It admits rot as a matter of course.

Re: Bitrot

#20
Part of the cause of software rot is the fact that much of our code is tied to a specific platform or paradigm. So if you're working with Java 5 code it might be hard as hell to work with since it doesn't take advantage of the conveniences of modern Java. Same with legacy C++ apps or any other app to be honest that's older than a few years in most programming languages. Ideally, you can write around the core logic while replacing what's not actively supportable anymore but when you're stuck on a business mandated timeline you make due with what you can do to minimize the software rot.
Post reply on HN