Sciencemadness Discussion Board

free Software for private chemists

chris9672 - 19-1-2022 at 06:27

Hello to all users interested in chemistry,

I am in the process of developing a new software for private chemists. This software should be available as freeware and divided into different areas.
• A database for elements such as hydrogen, helium, ... and their properties
• An area where various calculators can be found (e.g. Pressure-Temperature Nomograph, Acid & Base Normality/Molarity Calculator, Unit Converters, ...)
• An area where different substances can be stored and their properties can be looked up in online databases such as PubChem or ChemSpider without
switching to a web browser
• A database for storing various syntheses by using the substance database (e.g. Preparation of oxalyl chloride -> oxalic acid + phosphorus pentachloride)
• Laboratory diary
• Warehouse management of your own chemicals + label printing (an Android/iOS app is planned for this later, with which the barcodes on the vessels can be
read so that your own stock can be transferred to the software as a kind of inventory)

Additionally, an engineer friend is working on building a spectrophotometer using a Raspberry Pi and a Raspberry Pi camera. We plan to make the spectra created with the Raspberry available to the software as well (either via Ethernet or Bluetooth).


In order to make the right choice regarding the development framework, I need to know a few things:
1. Is there any interest in such a program?
2. Which operating system version would you prefer to use?
Intel/AMD CPUs 64-bit: Windows, Linux or macOS (Intel)
ARM CPU 64-bit: macOS (new M1 Macs)
3. are user administration and access restrictions desired?
4. Which version would be more interesting for you: single user or network?
Network database for simultaneous access by multiple or single-user version
5. Which additional function would you like to have?


I would like to emphasize again that the software will only be available as freeware. There will be no paid version and
the source code will not be open source.

Thx for your help.

[Edited on 19-1-2022 by chris9672]

Sulaiman - 19-1-2022 at 22:03

Great !

but I suggest that you complete one core objective first,
test it, publish it, fix it ...etc.
from those users you may get a clearer idea of what people want.

otherwise you may dilute your available time too much.

Ubya - 20-1-2022 at 09:15

For my home inventory i use cheminventory.net, i don't really need anything fancy, just a way to label cabinets/areas in the software and list my containers with data such as: where i bought it, when i bought it, how much it was originally and how much is left now. It also has a barcode generator, for your software qrcode could be better since most smartphones already have the qrcode-reading feature in default camera apps.

As for the element/compound properties database, using pubchem or chemspider is already pretty straight forward, opening a tab and clicking on a link isn't much of a hassle. Maybe for your software you could instead list different values taken from different sources (saying which value is from what source), i often read pubchem, and i may find there a value for lets say the melting point, then i go on a paper and the melting point is different, it would be nice to see the same property value from different sources (at least 2 or 3) so it is easier to get a more complete idea. Doing this comparison by hand would take time, so having this in the software would help, or at least it would be more useful than just relying on the fact that users would prefer to use the software feature instead of just popping a new tab open.

As for the operating system, just look at the statistics, most people use windows.
I also use ubuntu and raspberry Pi, but not for something like this.
If instead of a program you make an online service, you wouldn't have to deal with compiling the same program for different OSs, but yeah in that case it couldn't be totally free since you'd have to pay for a server, and some people wouldn't trust you with their lab data

[Edited on 20-1-2022 by Ubya]

chris9672 - 20-1-2022 at 13:40

Thank you for your answers.
First of all, an online service is neither planned nor will development go there. An online service would require me to rent at least one, if not several servers for money. However, the software is planned as freeware. I don't want to earn anything from this project, but I don't want to pay for others either. So even if it were desired, a web service is completely out of question. Also, if I were planning a web service, asking about the used operating system would be completely unnecessary.
The Online Services software runs completely on a server and only a small part such as e.g. range checking is running on the client. The GUI of such systems is only displayed in web browsers and is therefore completely independent of the OS issue.
The question of the OS is important because one development system I use only compiles Windows software and another also compiles for Windows, Linux and macOS. There will also be no Raspberry Pi version. macOS ARM means the new processor technology from Appel, which is based on ARM. Nevertheless, this software would not be suitable for Raspberry Pi.

@Suleiman
The development of a software project is always preceded by thorough planning and needs assessment.Why should I develop software if nobody is interested in it? Likewise the question of the operating system. For example, I would prefer pure Windows development. However, my wishes are not necessarily decisive. If a large number of users use Linux or macOS, for example, a later changeover can only be carried out with a great deal of effort.
Of course, the data has to be stored somewhere. A database is ideal for this. However, there are different types of SQL databases. For example, there is MS Access, a file-based database that only runs on Windows and does not allow secure and effective user management. Networking is also difficult with MS Access. However, if most users say I only want to run my database on one computer and user administration is not important to me, MS Access or other file databases would be the answer.
However, if users are interested in effective user management or in installing the software on different computers and still only using one database a database management system like MySQL is a better choice. However, there are differences in the SQL language used in the various databases. These differences are usually small, but still exist.

This is exactly why it is so important for me to know these answers in order to be able to use the right development tool and database system.

You can't just start programming without first clarifying these details.In most cases, such an approach means that the project comes to a standstill at some point because you have reached a dead end that could only be solved by starting over from scratch. Of course I want to prevent something like that, because it usually means the end of a project.

I hope I was able to make it clear why I first have to clarify such questions before I can start programming and deliver a beta version for testing.

Another small note to @Ubya. I politely asked for answers and expect a polite response. The statistic does not help in this case. Even if the majority of the world's computer owners use Windows, it does not mean that the users of this forum only use Windows. Even you should have noticed that the Linux community is growing. With all due respect, I don't understand why some users on various forums are so rude about some questions.
Regarding PubChem: I find it annoying when I work in software that I first have to switch from this software to a browser in order to then search for data from PubChem.
Especially if I first have to copy an ID in order to then paste it back into the browser.

[Edited on 20-1-2022 by chris9672]

Ubya - 21-1-2022 at 02:12

Oof, big F for me, i did't mean to sound rude, sorry about that.
I'm aware linux is becoming more common among "normal users", i myself started recently using it for day to day use!
I may have worded myself in a wrong way, but i still think windows is the most used OS even between amateur chemists, so to serve as many users as possible you should go with windows


About the online service, yeah i'm aware of the caviats, it was more of a retorical statement than a real answer, sorry about that too.

Not trying to be rude sorry :c


woelen - 21-1-2022 at 04:46

Maybe you can develop code for multiple platforms with a single source code. You could e.g. write Java code and use Java windowing libraries for displaying things and then the only OS-dependent thing is the packaging of the JAR-files and the starting of the program in a JVM.

Maybe you could even go one step further with something like GraalVM, which allows compiling several different languages into native machinecode for Windows, Linux and MacOS. But please investigate this further yourself, I do not know how well all kinds of windowing-libraries are supported by GraalVM. My experience is more on the server-side (web applications, REST-API's, that kind of things).

Oxy - 21-1-2022 at 13:00

@chris9672 what stack do you want to use?
I was planning to write a similar stuff but didn't started yet and such a project will take rather a long time.

Texium - 21-1-2022 at 13:28

I've only ever used MacOS for my personal computers, so obviously I'm biased, but I'd think it would be nice to have cross-compatibility across different platforms. I intend to build a PC once prices stabilize to use as a sort of all-in-one multimedia home entertainment system, however I would likely continue using my MacBook for lab stuff once I get my home lab going again, since I can easily take it out to the lab. While I could use the software on the PC, it wouldn't be as useful if I could only access it from a stationary computer far from the lab. Just my personal view though. If I'm in a tiny minority I'd totally understand if you decide to make it Windows-only. Could be a good question to put up as a poll in a new thread.

chris9672 - 22-1-2022 at 07:50

ok then let's start a poll ;)

here it is
https://www.sciencemadness.org/whisper/viewthread.php?tid=15...

[Edited on 22-1-2022 by chris9672]

MountainMan - 22-1-2022 at 08:49

Just to add a thought on interoperability: I'd seriously look at using Python as the main programming language and SQLite for at least the initial database(s). Python can be used on Windows, Mac or Linux. The modules available within Python such as NumPy and Matplotlib allow for the generation of publication-quality charts pretty easily. As a side note, I recently used Python to develop a serial terminal to receive data on either my IMac or Raspberry Pi from an Arduino-based colorimeter / fluorometer. The data is saved automatically as a CSV file which can be imported into an Excel program or any database that can read CSV files and/or generate a "live" plot as the data is received.
My concern about using Windows-based programming languages is that one is completely dependent on Microsoft for development and they sometimes have removed or deprecated features which preclude backward compatibility. I went thru that several times as they migrated thru Visual Basic 3-6 and then switched to VB.Net and my programs didn't work anymore.
I recently observed the same backward compatibility issue with XoJo (formerly RealBasic) which they changed versions.
In any event, good luck with your endeavor !

Oxy - 22-1-2022 at 13:25

This is not a problem when you would use .NET core or 6 with some cross platform desktop UI framework like AvaloniaUI.
I don't think anyone today would even think about using old windows only .NET framework stuff for that if we speak about Microsoft technologies.

There are many possibilities, it can be python, c#, java. Even javascript - many popular apps are written in Electron framework

Rainwater - 22-1-2022 at 16:24

For speed c++ is undefeated. There are millions of open-source libraries for any functionality you could want.
If your writing style is iso compliant then portability wont be an issue.

My feature request would me a step by step reaction trace.
Step 0)100 molecules of pure h2o(s)
Step 1) 100 molecules of Na(s)
Step 2) set temp pressure. Volume of reactor. (Lets say stp with open reactor and standard atmospheric composition.

Click start. Them print me out a frame by frame list of everythings state. Position. Vector. Magneticcharge.(Temp, pressure, redox state.)
Atom by atom would be great.
I want to watch the reaction as it unfolds. Frame by frame.

chris9672 - 24-1-2022 at 02:22

Quote: Originally posted by Rainwater  
For speed c++ is undefeated. There are millions of open-source libraries for any functionality you could want.
If your writing style is iso compliant then portability wont be an issue.

My feature request would me a step by step reaction trace.
Step 0)100 molecules of pure h2o(s)
Step 1) 100 molecules of Na(s)
Step 2) set temp pressure. Volume of reactor. (Lets say stp with open reactor and standard atmospheric composition.

Click start. Them print me out a frame by frame list of everythings state. Position. Vector. Magneticcharge.(Temp, pressure, redox state.)
Atom by atom would be great.
I want to watch the reaction as it unfolds. Frame by frame.


There is ample evidence that Delphi compilers produce fast and highly optimized code. The speed of C++ is not universal, but depends very much on the capabilities of the company that developed the C++ compiler. There can be no talk at all of an unchallenged speed of C++. I'm sure you wouldn't be able to determine with what compiler a normal app was compiled with if you didn't use tools. With this software no new millennium simulation of the universe should be carried out, it should serve as a normal database application. I'm able to use the millions of open-source libraries you mentioned with Delphi too.

[Edited on 24-1-2022 by chris9672]

chris9672 - 24-1-2022 at 02:45

First of all, I would like to thank you for all your contributions and reactions on this topic.

However, there are a few things I should clarify:

1. The software I am planning is freeware, but not open source. This is simply because I want to give users the ability to design and change lists, reports and labels themselves. For this reason I use a proprietary component for this part, which makes open source impossible and I don't want to reinvent the wheel several times when it comes to reports.
2. Exactly because of point two, the use of Qt and C++ as a GUI framework is also omitted. In order to use QT for free, the project must be open source.
3. For me, an interpretable language like Python is not an option for this project. There is no question that Python can be very useful in certain areas. However, this application is not one of them for me.
4. SQLite is not an option for me as a database because it is an in-memory system and because it was not designed to store larger amounts of data. But I don't want to put any hurdles in the way of users in this respect and have therefore decided to use MySQL or MariaDB.

@MountainMan
Finally, a word about MountainMan.
ObjectPascal is not a pure Windows programming language. In Delphi there are compilers for Windows, Linux, macOS, iOS and Android. So I don't understand why you're talking about a pure Windows programming language? I also find it funny that you mention backwards compatibility issues with Windows. I've just been programming for many years and never had any major problems with it. In fact, many have accused Microsoft of paying too much attention to backwards compatibility when developing MS-DOS and Windows, and therefore making the development of innovations more difficult. I don't find it particularly important that my programs are available for all Windows versions up to 3.11.

Oxy - 24-1-2022 at 12:14

As amateur chemistry is more and more 'gray-zonish' then non-open source may be a no-go zone for many interested as it might do a lot of bad things if that was a hidden intention of author. Someone may want to put there his work history, reagents stock and it might be very regrettable decision due to obvious reasons.

Having it closed source you loose a lot of support in terms of development. If you want to do a lot then it will take a lot of work and time.
A you want to write it in Delphi that is equal to programming archaeology.

Anyway, good luck with that.



[Edited on 24-1-2022 by Oxy]

macckone - 24-1-2022 at 15:56

I would love to have a good program for equation balancing, merck index substitute (possibly with data compiled from multiple sources), something that could provide solubility data based on a balanced equation would be nice too.

I am not currently in the mood to reenter a bunch of data for inventory tracking but something that helps with that would benefit others.
My interests are more along the lines of I know the reactants and the products, make it easy to calculate quantities needed for the experiment.
And then suggest solvents for separation steps, azeotrope elimination etc.

I have a number of periodic tables and a chemical inventory already.

Choice of language matters, objectpascal severely limits who can help you with the project.

Here is a 2014 article on dying languages:
https://insights.dice.com/2014/10/09/5-programming-languages...

Object Pascal is mostly dead, Adobe Flash is dead, Curiously C# has lost ground instead of C++, Perl and Ruby live on.
PHP is still very much at the core of the web. The new up and comers are Golang and Python.
There are some others as well. But object pascal isn't it.

Rainwater - 24-1-2022 at 17:13

Sorry, I misunderstood the purpose of your application.
features that could interest a amateur vs a professional may vary but some i think would fit both are as follows.

A) basic inventory control.
A1) Container checkin/checkout, consumption. (Who has it, how much was used)
A2) supplier, lot, date price
A3) consumption analysis and refill predictions/reminders
A4) warnings/reminders for material safety testing.
Testing for Peroxides in ethers.
Venting containers which outgas
A5) sds sheets, proper storage / handling info

B) reaction/perduction inventory control
B1) generate X amount of product "c" requires X amount of A & B
B2) cost analysis of producing a product

C) lab notes.
C1) procedures for creating products
C2) equipment required for reaction
C3) reaction documentation. Date time step/action/observations
C4) yield records

D) equipment logs
D1) inventory checkin/out
D2) damage reports
D3) routine maintenance/calibration/ replacement

9CWAI - 24-1-2022 at 21:01

I am interested and would use it, and I use windows. But you need to pace yourself in such a way that you have fun while doing it. I would be fine with a network or individual program whichever is easiest or the most fun. And I would recommend an open source if only so people can help you with fixing bugs and adding features. Doing all of that yourself won't be easy even if the individual parts are.

[Edited on 25-1-2022 by 9CWAI]

woelen - 25-1-2022 at 04:44

I also strongly recommend using one of the current languages, and Delphi certainly is not among them.

C and C++ still are in use nowadays, but these are not mainstream languages anymore. But they certainly are not dead, and still many interesting programs are written in these languages. There also is an enormous set of tools and libraries for these languages and there also is a great toolchain for them around the GCC compiler, which produces state of the art output in terms of performance and optimization. In re ent years there also has been a strong standardization in C and C++, also of libraries, so it is not difficult anymore to write code for multiple platforms, and only a small amount of code (especially in the GUI/windowing/displaying area) is system-specific, but this can be put in a wrapper-library, which is made for different systems, while the bulk of the code is system-independent. I have 15+ years of experience with C and C++ and I still think these languages are great for developing scientific software.

Java and C# are two languages, used in many many business applications nowadays, and for these languages, there also is a large number of libraries, frameworks and tools. In diversity and flexibility, these have surpassed the immense set for C and C++. Java and C# also are close to C and C++ in terms of performance. The modern platforms for running Java and C# programs are nearly as fast as compiled binaries (due to so-called Just-In-Time compilation, combined with adaptive optimization techniques). Java is somewhat more widespread and is less coupled to a single platform, but C# also has become much less tightly coupled to the Windows platform. Microsoft nowadays has toolchains for C# and .NET in different OS-es. I also have many years of experience, mainly with Java, but also to a lesser extent with C#, and for me, developing in these languages is quite a pleasure, also due to the large number oif high-level frameworks and tools, which allow high productivity, while at the same time allowing great performance of your final product.

Other languages, which can be valuable, are Python, Go, Javascript, but for high-performance, general purpose programs, I would choose one of the former mentioned languages.

chris9672 - 10-2-2022 at 04:07

Quote: Originally posted by Oxy  
As amateur chemistry is more and more 'gray-zonish' then non-open source may be a no-go zone for many interested as it might do a lot of bad things if that was a hidden intention of author. Someone may want to put there his work history, reagents stock and it might be very regrettable decision due to obvious reasons.

Having it closed source you loose a lot of support in terms of development. If you want to do a lot then it will take a lot of work and time.
A you want to write it in Delphi that is equal to programming archaeology.

Anyway, good luck with that.



[Edited on 24-1-2022 by Oxy]


I've already mentioned that it won't be an open source project, since I'll be using a closed source component as the report generator. What is the fuss about fear of spying, please? I'm sure you'll be able to spot dangerous code in an open source profect. Most users don't even know how to find dangerous places in the source code. In addition, no packers or other protective software will be used. If you are able to find dangerous code in open source projects, you should be able to do this in a debugger with the disassembled code as well.
By the way, this spying problem also affects open source software or do you want to tell me that you compiled all the software you use yourself? If you use ready-compiled open source software, you can't tell whether code was built in before compilation. Who compiles all their apps themselves, including the operating system?

About the programming languages:
I was just asking what operating systems are used and whether a network version is interesting or not.
Some companies may switch to C# or Java, but almost all open source projects rely on compiled languages ​​and not bytecode. Most bytecode apps are a lot slower and usually countless assemblies have to be provided.
I didn't ask about that either. I've been programming for over 30 years now and even if some people don't like it because they maybe use C# privately, it's still my decision which language I use for a project, especially since nobody can really make a valid argument against Delphi.

Anyone who wants to use the app later will do so. If you don't want to use them, you won't be forced to.

I find it very presumptuous to dictate to someone what the best programming language is (there is no such thing as a best programming language).

I didn't want to start this thread at all because I was aware that there were always people who thought they knew everything better. I work in medical research and have already created applications for medical image processing in Delphi as well as in C/C++. What most people don't know is that there are countless companies that use Delphi even this days.

chris9672 - 10-2-2022 at 04:45

Quote: Originally posted by Rainwater  
Sorry, I misunderstood the purpose of your application.
features that could interest a amateur vs a professional may vary but some i think would fit both are as follows.

A) basic inventory control.
A1) Container checkin/checkout, consumption. (Who has it, how much was used)
A2) supplier, lot, date price
A3) consumption analysis and refill predictions/reminders
A4) warnings/reminders for material safety testing.
Testing for Peroxides in ethers.
Venting containers which outgas
A5) sds sheets, proper storage / handling info

B) reaction/perduction inventory control
B1) generate X amount of product "c" requires X amount of A & B
B2) cost analysis of producing a product

C) lab notes.
C1) procedures for creating products
C2) equipment required for reaction
C3) reaction documentation. Date time step/action/observations
C4) yield records

D) equipment logs
D1) inventory checkin/out
D2) damage reports
D3) routine maintenance/calibration/ replacement


Many thanks for your response. I find comments like this very helpful. It also corresponds to what I had imagined. I really appreciate your post.

I have one more question about the safety and hazard warnings. In Europe, the GHS system of the United Nations is used. I know that the United States had their own system for a long time, but are now also changing it massively. I would like to implement the GHS system H, P and additional EUH Statments (Hazard Statements, Precautionary Statements and EUH = supplementary hazard characteristics and labeling elements for the EU) including the corresponding GHS pictograms. I think everyone is familiar with this system?