You may have noticed that it has been pretty quiet along the iOS front for a few months. That’s because we were pouring a lot of effort into a major update that we recently released: Version 2.2.
Project Pain Point
Our users are depending on CxAlloy TQ more than ever. They are also using CxAlloy TQ for bigger and bigger projects. We think this is great! The iPad 2, however, begged to differ. We received feedback that for some users, these Very Large Projects (as we creatively refer to them) could sometimes take tens of minutes to download on older devices and slower connections. This wouldn’t do.
The problem stemmed from just how Large these projects can get, some of which include hundreds of thousands of records. In order to use these projects offline, all of this data had to be downloaded to the device, processed, and inserted into a local database. It was a taxing process for almost every one of the major resources of a modern computing device: memory, CPU processing, disk speed, and network transfer. With all of those resources churning away, the battery would take a pretty big hit. Designing performant software means trying to get the app to do as little work as possible and in this situation, the app was doing an awful lot of work.
Mobile device speed has had major increases over the past few years. For the iPad Pro, downloading a Very Large Project would barely cause it to break a sweat. For older devices, however, this was a grueling task. It wasn’t fun for the user, either, who had to wait as the device strained under the load.
Interested in CxAlloy TQ? Learn more at cxalloy.com
Pull Your Weight, Servers
We have some very powerful servers running the CxAlloy site and we decided to see if by leveraging that power, we could give the mobile devices a break. We ran a test to see if we could offload project download work from the device onto the server. In our initial test, a Very Large Project that took 20 minutes to download and process on an iPad 2 only took about 2 minutes on the same device when we moved the processing to the server. We were definitely on the right track.
In the end, we managed to move all of the processing needed from the app to the server, leaving the device to merely download a ready-to-go project file. iOS devices are highly optimized for downloading files so we went from these older devices straining to keep up to downloading the project with a barely noticeable amount of effort.
Time to Slim Down, Projects
We were very happy that all the app had to do to get a project from the server was to download a single file. But our work wasn’t done, yet. For Very Large Projects, this file could sometimes be over 100MB in size. That’s a lot of data. On an LTE connection or on speedy WiFi, this may be pretty quick, but some of our international users (¡Hola Chile! 🇨🇱) have slower WiFi connections and since the app is used primarily in the field, sometimes users need to download a project in the field over a very slow cell connection.
We were curious to see if HTTP compression would come to the rescue. HTTP compression is a technology by which data is zipped up before it is sent down from the server to the device. This is similar compression that is utilized by the .zip files on your computer, but with HTTP compression, the zipping happens in real-time as the data is transferred to the device.
So, we ran a test using a project whose download file came in at a relatively svelte 15MB. We turned on HTTP compression and were impressed to see that it managed to squeeze the download down to 2.7MB. That was about an 80% reduction in size. The actual savings for your individual projects will vary, of course, but it will definitely be an improvement for users on slower connections and those with metered data.
We extended compression to the sync process as well, reducing transfer time and data usage.
The majority of development time for 2.2 was in the new project download, but we managed to also slip in a much requested feature: filtering.
Currently only available on the equipment list, filtering allows you to limit the list to only the equipment that matches the criteria you specify. Just like on the desktop you can filter by status, discipline, equipment type, location, and system. To try out the new filters just click the new Filter icon next to the Sort icon at the top of the equipment list.
A future version will bring filtering to the other lists.
Other 2.2 Features
Project download performance and equipment filtering isn’t the only thing new in 2.2. Here is what else you’ll find:
- New project download icon and text provides more transparency into the download process
- Removing a project from a device is now much faster
- Tons of bug fixes
We take performance pretty seriously here and we are excited to provide our users with a new project download system that will significantly improve wait times and battery life while using our app. We’re curious to see what you think of the new download times in Version 2.2 and if you have any comments or questions, please let us know at firstname.lastname@example.org.