chris9672
Harmless
Posts: 8
Registered: 24-9-2016
Member Is Offline
Mood: No Mood
|
|
free Software for private chemists
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
International Hazard
Posts: 3692
Registered: 8-2-2015
Location: 3rd rock from the sun
Member Is Offline
|
|
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.
CAUTION : Hobby Chemist, not Professional or even Amateur
|
|
Ubya
International Hazard
Posts: 1247
Registered: 23-11-2017
Location: Rome-Italy
Member Is Offline
Mood: I'm a maddo scientisto!!!
|
|
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]
---------------------------------------------------------------------
feel free to correct my grammar, or any mistakes i make
---------------------------------------------------------------------
|
|
chris9672
Harmless
Posts: 8
Registered: 24-9-2016
Member Is Offline
Mood: No Mood
|
|
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
International Hazard
Posts: 1247
Registered: 23-11-2017
Location: Rome-Italy
Member Is Offline
Mood: I'm a maddo scientisto!!!
|
|
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
---------------------------------------------------------------------
feel free to correct my grammar, or any mistakes i make
---------------------------------------------------------------------
|
|
woelen
Super Administrator
Posts: 8012
Registered: 20-8-2005
Location: Netherlands
Member Is Offline
Mood: interested
|
|
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
Hazard to Others
Posts: 140
Registered: 1-12-2020
Member Is Offline
|
|
@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
Administrator
Posts: 4579
Registered: 11-1-2014
Location: Salt Lake City
Member Is Offline
Mood: PhD candidate!
|
|
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
Harmless
Posts: 8
Registered: 24-9-2016
Member Is Offline
Mood: No Mood
|
|
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
Harmless
Posts: 20
Registered: 6-4-2011
Member Is Offline
Mood: No Mood
|
|
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
Hazard to Others
Posts: 140
Registered: 1-12-2020
Member Is Offline
|
|
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
National Hazard
Posts: 919
Registered: 22-12-2021
Member Is Offline
Mood: indisposition to activity
|
|
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.
"You can't do that" - challenge accepted
|
|
chris9672
Harmless
Posts: 8
Registered: 24-9-2016
Member Is Offline
Mood: No Mood
|
|
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
Harmless
Posts: 8
Registered: 24-9-2016
Member Is Offline
Mood: No Mood
|
|
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
Hazard to Others
Posts: 140
Registered: 1-12-2020
Member Is Offline
|
|
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
Dispenser of practical lab wisdom
Posts: 2168
Registered: 1-3-2013
Location: Over a mile high
Member Is Offline
Mood: Electrical
|
|
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
National Hazard
Posts: 919
Registered: 22-12-2021
Member Is Offline
Mood: indisposition to activity
|
|
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
"You can't do that" - challenge accepted
|
|
9CWAI
Harmless
Posts: 16
Registered: 5-2-2019
Location: Utah
Member Is Offline
|
|
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
Super Administrator
Posts: 8012
Registered: 20-8-2005
Location: Netherlands
Member Is Offline
Mood: interested
|
|
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
Harmless
Posts: 8
Registered: 24-9-2016
Member Is Offline
Mood: No Mood
|
|
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
Harmless
Posts: 8
Registered: 24-9-2016
Member Is Offline
Mood: No Mood
|
|
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?
|
|