design – Practical advice for designing long-term and low-maintenance software

I’m a software engineer with around 2-3 years of actual work experience, which I consider to be fairly inexperienced. I am tasked with building some software for a physical machine which, due to the kind of work my company does, needs to be stable to use for a long time ahead (think like 10 years at least – more likely to become 30-40 years). The system also need to be very low-maintenance as there is currently only one person available for doing maintenance work (me), and I will not have much time to spare for this.

So, my question is basically this: how should one think when designing software that needs to be stable and low-maintenance over a long time? Some practical aspects:

  • What do I need to focus on when coding? What should I value in “good” long-term code?
  • What programming languages are likely to be commonly used many years from now?
  • How do I deal with using libraries or packages?
  • What software development tools are safe to use in these cases (IDE/integration tools for instance)? Can old tools cause problems later on?
  • What precautions can I take to maximize the chance that my code will run even if I change hardware?
  • Is it reasonable to only make this code to run on a specific set of operating systems (to lower maintenance work)?

I have found very little on this subject by researching on my own. I have come across some blogs that have helped a little. However, they most often speak philosophically about the need for stable software development, and offers little guidance on the practical choices that one needs to make when designing long-lasting software:

My own reflections so far:

  • Try to write code “sustainably” (easy to read, easy to change, small functions, single responsibility principle, yada yada…).
  • Rely a lot on automatic testing in order to reduce the amount of maintenance work.
  • Try to follow the most widely used domain-specific tools/standards, for instance language standards or standards for communication protocols etc.
  • Try to prefer newer technology over old technology, even if the old technology may be de facto standard today.
  • Use “reliable” hardware manufacturers for physical parts. That is, companies which are stable and are likely to still be in the game in 10 years time.

I am very thankful for any advice from more experienced developers, especially if you have experience working on a similar project!

Side note: If this is the wrong forum to ask such a broad question, please redirect me to a more proper site!

Python dynamically import modules – Software Engineering Stack Exchange

I am trying to find the best practice for importing modules dynamically. I have multiple files in a specific folder called providers which contain a class Updater and all of them have the same objects.

This is the structure I have:

Each provider has 3 class objects: get_latest_version, get_current_version, install.

This is the contents of file:

#!/usr/bin/env python3
from Updater.plex import Updater as PlexUpdater
from Updater.pihole import Updater as PiholeUpdater

for provClass in (PlexUpdater, PiholeUpdater):
    provider = provClass()
    latest_version = provider.get_latest_version()
    current_version = provider.get_current_version()

I need to be able to create file on the providers folder and be automatically imported on the main file without explicitly importing myself. Could you suggest a way to make this work?

terminology – What is the difference between “software regression” and simply a bug?

I keep hearing people who (apparently) want to sound important and academic talk about “regressions” in software. What exactly does it mean? Every time I look it up, I come back not having any idea what it means.

It sounds just like a bug to me. Is it a fancy synonym for “bug”?

windows 10 – How can an open source software such as LibreOffice not even tell me about it spying on me?

I’ve had constant freezes of LibreOffice Writer (every single day, multiple times). I’ve tried asking about it to deaf ears, and looked through all the program options. While scanning through the preferences, I nearly got a heart attack when I saw that these are ENABLED by default, not mentioned whatsoever in the installer (if they were, I would have disabled them like I always do):

(X) Collect usage data and send it to The Document Foundation
(X) Send crash reports to The Document Foundation

Even sketchy, closed source, commercial software always has this in their installer, more or less clearly communicated to the user. Not LibreOffice. I had to find this out by chance, months after using the software to write important documents.

Now, for all I know, all my “private” information is one some random server out there, as “crash report data”.

I’ve read their (outdated) webpages talking about these options, and they are very vague on what exact data is sent, as always is the case since if they were clear, nobody in their right mind would ever enable or keep these options enabled.

It really bothers me that there is such a blatant disregard for privacy these days. How many users of this crash-prone junkware have any idea that these options are enabled by default? I only know from stumbling upon them, never thinking in a million years that an open source project would include spying.

Every single time I hear that data has been “anonymized”, the exact opposite is the case: it’s not anonymized at all, and logically cannot be. I did not consent to send any kind of data anywhere, even if we assume the best possible scenario and they really don’t send any “personal” information with these crash reports… but we all know that it’s a lie.

If it weren’t for the fact that there is no alternative, this would be the final straw for me. Constant freezing was bad enough, but spying enabled by default and not mentioned in the installer?! There really are no good guys left at this point.

timelapse – What software could I use for aligning time lapse stills to remove camera shake?

Aligning can be done for example with stitching-programs like Hugin.

  • add all you pictures to the hugin-project
  • let the pictures be analyzed/matched by “align image stack” (Images – Tab: Feature-Matching)
  • add some points if needed (Control Points – Tab)
  • set optimization to Position and Translation at the most (Optimiser-Tab)
  • Optimize (Optimiser-Tab)
  • check with “Preview panorama” (button above)
  • go to Stitcher-Tab, set Projection to “Rectilinear”
  • choose Output as “Remapped images”
  • stitch! 😀

You will get your pictures remapped into several exactly overlapping ones in the choosen format/size (Stitcher-Tab: Autocrop can remove nonoverlapping borders). It’s a nice side-effect and prerequisite of stitching, I used it to create ghost-images (people swinging down a slope: put them five times into one picture), just stitching them together later (using enfuse/enblend on command line).

Hugin can do much more (like every decent stitcher, I guess), for example remove your barrel distortion and also vignetting. Look into optimizations for that.

Custom Healthcare Software Development

Steelkiwi is one of the best medical software development companies. Steelkiwi provides caregivers with task-driven solutions that enhance diagnostics and treatment, improve medical workflows, engage patients, and tackle day-to-day challenges on the way to value-based care. We use advanced technologies and follow the latest industry standards to build custom healthcare solutions that meet the needs of medical organizations.

Automate workflows in a private medical practice
Modernize retail pharmacy management
Improve the customer experience with wellness providers
Increase online sales of medical devices

Talk to us about your healthcare project
Have an idea for a healthcare app? Your best healthcare app developers are here. Drop us a line and we’ll get back to you.

GRSoft Gaming: Game Software Development Company India

Games are one of the most popular game types; people spend a lot of time playing such games on a regular basis. Moreover, even after having … | Read the rest of

Software handbook / tutorial as pillar content?


I'm wondering whether that would work:
A software handbook / tutorial nicely formatted as a super long pillar content.

  • screenshots
  • error messages
  • internal links to video tutorials on how to use the software
  • internal links to further info on sub-sections on the software

And the keyword sth like: how does [software] work or similar.
Did anybody try this? Is it worth the time investment? How to get such a best in class content afterwards on top of Google…

Software handbook / tutorial as pillar content?

programming languages – Looking for a software to make license key for my pdf file such a way that for different machines the license key will be different

Looking for a software to make license key for my pdf file such a way that for different machines the license key will be different. I have already seen serial key maker is not a solution. I am describing it a little more. Whenever someone will open the pdf file, there will be generated as for example 16 digit no and when he/she will email me that copied out 16 digits no and then I will enter the no in my software there will be generated a serial key for his machine only. so obviously you got my point for the different machines the 16 digits no will be different.

macos – Bootcamp error: Can’t install the software because it is not currently available from the Software Update server

Whenever I try to proceed with the bootcamp installation or click the download windows support software option from the action menu, it throws me that error.

I’ve googled this problem and made sure I have a strong wifi connection, plugged in my Macbook while doing this, am running the latest Catalina version and apart from the current windows 10 iso on the microsoft website, tried using older versions of windows 10. Nothing helped.