Since I joined MagenTys back in July last year, I have been looking at the internal innovation of processes to help us work that little bit more efficiently. As we are a rapidly growing company, I can foresee that we will soon reach a point where our current system for managing devices (a spreadsheet) will be too vast to manage.
My initial thoughts were, ‘This will be easy, all I need to do is create a simple website that users can check devices out on.’, but on further thought and research I realised that this was not the case. One primary piece of information that is critical in order to manage individual devices, is the ability to uniquely identify a device regardless of its state. For example, how would the system assign the same ID to a device that has been reverted to factory settings?
With this question in mind and the knowledge that this system would be required to run on all the major smartphone Operating Systems, I set out to find the best platform to develop this system.
First and foremost, my reminiscent skills from university pulled me in the direction of web development. But unfortunately my research led to a dead-end where I found that neither front end or back end technology could deliver me the uniqueness and persistence of device identification that I required (craved; in-fact)
At this point with the good old trusty web dev out the window, my heart sank as I realised that I may have to develop this system for each individual OS. This horrifying thought of the seamless sea of this knowledge base, and the vast amount of time required to understand and implement this depth of talent, made me feel as if the great Cthulhu would swallow the rest of my life force whole in order to deliver this system. With the notion of not wanting to spend the rest of my life developing this system, I began researching cross platform technologies.
One technology that I came across was the Apache group’s open-source cross platform environment ‘Cordova’. As this is coming from Apache, the same group who maintains their eponymous popular website server application in Linux, we can rest assured that this will be a high quality open-source system. So high quality in fact that previously the whole system was owned by Adobe under the name PhoneGap, who entrusted Apache to take ownership of the frameworks’ core components. PhoneGap and Cordova are currently fairly similar but Adobe offers the ability to build the applications that use the framework in the cloud, a service which they charge for.
On further research into the abilities of Cordova I found that the framework had modules that would allow a developer to ascertain information from and control various hardware components. One of which supplied the ability to read the system’s Universally Unique Identifier (UUID). This would have been ideal if it were standardised, but each mobile platform seem to have different ways of specifying this information, with some not having the ability to persist uniqueness even after the device has been restored to factory settings. This issue led me to have a discussion with another techy colleague from MagenTys, James Goddard, who suggested using the IMEI number instead. This would have been perfect if the system was for mobile phones only, but as we need to account for tablets as well, this would not have been possible as IMEI numbers are only assigned to devices with mobile access.
My final choice for an ID that could be ascertained by Cordova was the MAC address of the network hardware components. MAC addresses are set as read only on network hardware by the manufacturer of the part when in the factory and are used in the networking standard OSI model to uniquely identify devices on a network. In terms of security Mac addresses they can be spoofed/masked over a network, but due to the nature of this system, this will not be a concern.
Using a MAC address that is unique to a device would allow the user to login from the app built on Cordova. The login would authenticate the user then assign the device they have logged in from to that user, and the reverse would happen if the user logged out. This would allows us to circumvent the otherwise required effort of an administrator to add each device to the system’s database. If the device is not recognised by the system, the app could prompt the user to register the device before they could check it out. This will display a form that the user would have to fill out to describe the device, with most of the data being pre populated by what Cordova could ascertain about the device.
Ultimately, this will allow us to create an app that can run on any major platform and OS, including OSX and Windows if needs be. It will allow companies to know which employees have what devices at any given time. More effective management of internal devices helps us as a company to streamline our processes, ensure we have the right devices available for our clients when they need them, and gives us more time to invest into client projects. It therefore helps us to save time in terms of manual management, and reduces unnecessary overheads.
Sounds pretty good to us…
Lewis is the new breed of DevOps enthusiasts who also automates in Ruby. He shares many similarities with 'datboi' as every week he brings in a new gadget or self-made thingamajig that will help us or make us happy.