Version 1.2.8 of the Mobile Molecular DataSheet has been submitted to the AppStore: with any luck, the new version will be available within a few days. The release schedule got moved forward a little bit because the previous version inadvertantly blanked out two of the icons on the main menu (oops). The new version introduces a significant new feature that has been in the works for some time: MMDS now makes use of remote procedure calls to provide some of its functionality. The first such feature to be exposed is the ability to generate SVG (scalable vector graphics) of images when sending molecules, reactions or datasheets via email.
MMDS has always had the ability to initiate an outgoing email with attachments, but up until this new version, these have been limited to the data formats that can be generated from within the app itself, which includes: native molecule format (SketchEl), native datasheet format (XML), MDL formats (MOL, SDF, RDF, RXN) and graphic images of molecules and reactions (PNG).
Now when you initiate an outgoing email, instead of just bundling all of the formats that it knows how to create, it offers a dialog box, which allows you to select from a list of additional formats which can be generated by initiating a request to a webservice. At the moment there is just one such option: SVG, but it is the first of many. If the option is enabled, then prior to initiating the outgoing email, MMDS will establish a line of communication with the webservice, and ask it to generate the additional attachment(s). The webservice performs this function, i.e. generating and returning an SVG graphical representation of the molecule or reaction, and MMDS adds the attachment to the outgoing email, with the MIME type image/svg+xml. When you initiate the sending of a datasheet, which can have numerous molecules or reactions, the dialog offers to generate a zip file instead, which will contain within it an SVG file for each molecule or reaction.
The significance of this new feature is not so much that MMDS can now export SVG files. Don’t get me wrong: SVG files are cool. Modern browsers can display them, and you can edit them with open source software such as the very excellent inkscape, which satisfies all of my graphical drawing needs. Writing Objective-C code to make MMDS generate its own SVG files would not have been all that difficult. But setting up the machinery for making webservice-based remote procedure calls opens the door to easily providing new features which are not likely to get ported to Objective-C anytime soon.
The server that is providing the extra work for this service is molsync.com. But don’t point your browser there just yet. The server is running a cheminformatics software stack that has been slowly assembled by MMI over the last year or so. Other than generating SVG files for MMDS, it presently has no user-facing features. But that is going to change. Providing new functionality directly for MMDS-based mobile apps, and web based user interfaces for new cheminformatics tools, is on the development roadmap. When there’s something more to see, rest assured that it will be all over this blog.
The remote procedure calls are different from the webservices client that has been a part of MMDS since last year. The webservices client is designed to make it easy for users to roll their own services, and add value to the client software without having to obtain permission from the vendor company. The remote procedure calls are tightly integrated into the workings of the app itself, and will become a cornerstone for adding increasingly sophisticated cheminformatics capabilities to MMDS.
One thought on “MMDS with remote procedure calls: email SVG”
Note: anyone who has upgraded to MMDS 1.2.8 will probably run into a glitch – it doesn’t automatically configure the correct URL for the webservice. This can be fixed by either Main | Configure | Restore Config Settings, or Main | Configure | Settings… and set the “Host” field to “http://molsync.com/MolSync”. The next release, MMDS 1.2.9, will automatically fill in the missing configuration URL.