Skip to main content
62 votes

SQL as a means of avoiding "releases"

Problem scenarios like these tend to suffer from a very confused train of thought that mixes ideas. In an attempt to answer this, I am going to have to systematically unravel all of the discrete ...
Flater's user avatar
  • 59.5k
36 votes

How can we avoid extremely complex configurations in enterprise software?

Why do companies making software sold to other companies tend to attempt to make the code general enough to meet the needs of all clients at the same time, while adapting the product to the needs of ...
candied_orange's user avatar
33 votes
Accepted

What Semantic Version increment to use for a filename change?

I think myprogram needs to release 1.1.0 which supports the myprog alias. If the user invokes myprogram then it should present a notice/warning to the programmer that this name will be deprecated in ...
MonkeyZeus's user avatar
24 votes

SQL as a means of avoiding "releases"

Monkey Patching It seems that the requirement from your boss is to have the ability to Monkey Patch the system while bypassing all other software development tools, processes and methodologies. Monkey ...
Ben Cottrell's user avatar
  • 12.1k
24 votes

How can we avoid extremely complex configurations in enterprise software?

Candied orange's answer makes a good job in explaining the economical motivation behind configurable systems in a quite metaphorical way. Still the main software engineering question remains, how we ...
Doc Brown's user avatar
  • 220k
16 votes
Accepted

In what configuration file format do regular expressions not need escaping?

CDATA sections in XML should do. Here's a stackoverflow post about it: https://stackoverflow.com/questions/2784183/what-does-cdata-in-xml-mean I remember it took me a while to understand how to use ...
Martin Maat's user avatar
  • 18.6k
15 votes

What Semantic Version increment to use for a filename change?

Since this is a backward incompatible API change, you should bump to 2.0.0. Changing the name of a command line program is backward incompatible because the name is part of the API, and scripts and ...
JacquesB's user avatar
  • 62.3k
13 votes
Accepted

Binary data formats, how to make ensure you can read different format versions?

It seems to me that the simplest solution is to make your version header unambiguous and make sure that the old format can never look like it has a format header, you simply look for it. If it's not ...
JimmyJames's user avatar
  • 30.9k
13 votes

In what configuration file format do regular expressions not need escaping?

This is indeed an interesting question, as commonly the requirements for config file formats are somewhat different, so it's understandable that available formats don't really support this requirement....
Hans-Martin Mosner's user avatar
11 votes

How do I decide whether an option belongs in an environment variable, command-line option, or both?

The decision between command-line option and environment variable should primarily be driven by what is convenient for the end-user of the application and the expected usage patterns of the option. ...
Bart van Ingen Schenau's user avatar
10 votes

Binary data formats, how to make ensure you can read different format versions?

Your old format starts with an 8-byte "size" element (probably a 64-bit long). If that's the file size in bytes (what I guess), it most probably never exceeded 100 GByte, meaning 2^37. So, if you ...
Ralf Kleberhoff's user avatar
10 votes

In what configuration file format do regular expressions not need escaping?

Consider TOML It handles two different forms of raw strings: regex = '<\i\c*\s*>' OR regex2 = '''I [dw]on't need \d{2} apples'''
JimmyJames's user avatar
  • 30.9k
9 votes

Storing settings in a table in my SQLite database or separately?

I don't agree that storing settings in a database table is a bad separation of concerns. Your "concerns" will be separated by not defining a relationship between the settings table and other tables in ...
Bill the Lizard's user avatar
9 votes
Accepted

Should a class be responsible for its own configuration

Both is not really great. The first version is slightly better, because it at least attempts to be able to inject something. The problem is, strings cannot be injected based on the name of the ...
nvoigt's user avatar
  • 9,230
9 votes

Should you test configuration?

There's a (mis)conception that you don't have to test configuration Well, you wrote it - it is probably a misconception. Any configuration has surely to be tested - and it will be tested, at least at ...
Doc Brown's user avatar
  • 220k
8 votes

Binary data formats, how to make ensure you can read different format versions?

The convention format version ID, everything else is good because it gives maximum flexibility for the format. In your case the version ID isn't right at the front but at a fixed offset. This slightly ...
amon's user avatar
  • 136k
8 votes
Accepted

The notion of configurable strategies

"As you can see above, each Strategy is optionally configurable through its constructor." This is perfectly fine/normal, and is in fact one of the cornerstones that makes polymorphic types ...
Filip Milovanović's user avatar
8 votes

What Semantic Version increment to use for a filename change?

The semantic versioning defines versioning rules solely in relation with the API, as it aims to facilitate the management of dependencies between packages. Regarding the command line you are in a grey ...
Christophe's user avatar
  • 82.2k
8 votes

SQL as a means of avoiding "releases"

That code is in stored procedures inside a SQL-based database does not excuse it from version control, version management, testing, and all the usual dance steps of software development. For ...
Pablo H's user avatar
  • 694
8 votes
Accepted

What are the benefits of configuration languages over just using the source language?

To perhaps state the obvious, configuration is a different activity than coding. In my experience, configuration is something that is applied at the point of deployment. For example, you might need ...
JimmyJames's user avatar
  • 30.9k
8 votes
Accepted

How can I manage validation logic for 150+ screens with unique business rules across microservices?

Ok, you have a system with 150 services and a common, monolithic database. On the web, you will find hot debates if this really counts as a microservice architecture, that the DB is a single point of ...
Doc Brown's user avatar
  • 220k
7 votes

How can we avoid extremely complex configurations in enterprise software?

A solution we've been using for a couple of decades now is to have complex ERP software with standard off-the-shelf configurations. The customer gets a lot less choice taking a pre-configured ...
Robert Frost's user avatar
6 votes
Accepted

How to read configuration text files in Java

Raw Java world uses Java propeties format to handle similar configuration tasks. Dedicated class Properties makes this trivial. try(Reader reader = Files.newBufferedReader(Path.get("config....
Basilevs's user avatar
  • 4,484
6 votes

Should I place #define in separate file?

It depends. Do you need that #define to avoid "magic constants", or do you use the #define to make it configurable? If SOME_BUFFER_LENGTH needs to be 256, and you don't want to write 256 everywhere ...
gnasher729's user avatar
  • 49.4k
6 votes

Is it crazy to move deployment logic into test suite …?

See it this way: what you actually did is, you automated the steps of your deployment process in a test-driven manner, just like you can implement any other program or component in such a manner. ...
Doc Brown's user avatar
  • 220k
6 votes
Accepted

Environment configuration vs domain detection

You should definitely modify the CI to correctly set the configuration for the environment rather than trying to work it out from the Url at runtime. You should use Ocotpus Deploy to replace config ...
Ewan's user avatar
  • 84.4k
6 votes

In what configuration file format do regular expressions not need escaping?

NestedText is a configuration file format that makes a point of not requiring any escaping or quoting, which makes it very good for applications like this: # regex examples from: # https://support....
Kale Kundert's user avatar
6 votes

SQL as a means of avoiding "releases"

we have no DevOps pipeline, Kubernetes, etc. due to IT department restrictions, so everything deployment-wise is manual at this point While you added it as a passing comment, this is the most ...
Ian Kemp's user avatar
  • 398
6 votes

How can we avoid extremely complex configurations in enterprise software?

Maybe not... This approach, from my experience, has important flaws. From the programmers' point of view, the product, in its entirety, is incoherent, too big, too complex and frankly weird. It is ...
Flater's user avatar
  • 59.5k
5 votes

Is it crazy to move deployment logic into test suite …?

If your "test code" is being used to deploy your production code, it's no longer test code - it's production code. That being said, your idea is sound in that mirroring your production environment as ...
enderland's user avatar
  • 12.2k

Only top scored, non community-wiki answers of a minimum length are eligible