As a teacher in Lower Saxony, Germany, one of Niehaus' main goals when developing Kalzium (the German word for Calcium) was to write an application that was both a teaching and a learning tool. "I want to be able to demonstrate things and I also want my students to be able to learn things from Kalzium and to use it as a reference," he says.
Kalzium was a originally developed as a simple interactive table of the periodic elements but has evolved into a full-featured application, complete with an equation solver and modified molecular calculator. Its database contains information on more than 100 chemical elements, and can be manipulated to show data in several ways, including mass, density, charge, and name origin. Kalzium even includes a timeline that allows users to sort data according to year of discovery.
Niehaus uses the Vim text editor to code Kalzium. "I started using it on Day One and can no longer use non-extreme editors like Kate. I need all those crazy shortcuts," he says. "[However], the day KDevelop supports Vim as an editor I will use KDevelop." To create the GUI portion of Kalzium, Niehaus prefers TrollTech's Qt Designer, which he says is especially useful for creating dialogs and widgets.
Niehaus and code developer Benoit Jacobs recently began working on a new way of displaying chemical information with Kalzium: the 3-D model. The team uses Open Babel 2.1, a free software application used to convert chemical file formats. They tweaked the package to suit their specific needs. By using Open Babel, Niehaus says Kalzium will be able to display "pretty much every 3-D file out there, including chemistry file formats such as .mol, .pdb, and .xyz."
When Kalzium users reported a need to solve chemical equations within the application, Niehaus responded by teaming up with the developer of EqChem, Thomas Nagy. As a result, the current release of Kalzium now solves some of chemistry's most complicated equations.
According to Niehaus, however, distributions continue to ship Kalzium without this feature. "I
guess that is because they think Kalzium needs [programming language] OCaml (and a library called
libfacile) as a runtime dependency," says Niehaus. "But that is wrong. They only need it as a compiletime dependency when they package Kalzium. It is statically linked and the user does not need to have OCaml installed." Niehaus says that he does not know of any distributions currently shipping the full-featured version of Kalzium, but says he hopes to see that change as distributions develop a better understanding of how Kalzium functions as part of a larger package.
Though an exact date has not been set for the release of the next version of Kalzium, Niehaus says it will contain many exciting new features, and updates to many existing ones, including a more polished user interface. In response to the need for greater mathematical capability, Kalzium 4.0 will also include a math library named Eigen to compute eigenvectors and 4x4 matrix calculations.
A much more subtle, but no less important, addition is the merging of Kalzium's data with the XML-based data of the Blue Obelisk project. Blue Obelisk is a collaborative effort of chemists worldwide who contribute to a variety of open chemistry-based projects.
"Many applications are now using Blue Obelisk [data]," says Niehaus. "The more it gets used, the more data is added, and the more errors are spotted and fixed. This ensures a higher overall quality. [After all], what is Kalzium worth with unreliable data?"
Niehaus says the second reason he chose to merge his data with Blue Obelisk "is that (I think) all members of the project have studied chemistry and really want to keep the data at a high and well-documented level. So we use references [and] well formed-XML."
When asked to name his favorite feature in Kalzium, Niehaus says he is especially proud of the application's strong search feature that allows users to wade quickly through a tremendous amount of data. He says by using this application, "you don't have to look up all the data in a book.
"Or more like in 10 books," he adds, jokingly.