Docker and custom mobile application development are both very hot. Recently we decided to run a small internal project to gain some ‘sleeves-up’ insight into Docker as well as how we could deliver containerized versions of applications.
This blog article, along with others to follow from both my colleagues and myself will document some of our learning. We hope they will be of value to others who may not have the time or environment to conduct a similar exercise on their own.
Nearly 5 years ago I wrote a blog entry about Perficient being the best technology school in Hangzhou. I briefly introduced our Boot Camp training program, an intensive 3 week program targeted towards university seniors interested in joining our company. We strongly believe that the best way to learn is by doing, so during the Boot Camp — in addition to lectures and labs — the participants build real software. Clearly we don’t want individuals of limited experience working on client projects, so the projects that our Boot Camp teams work on are systems that we can deploy and benefit from internally. One project developed by one of our recent Boot Camp groups is a Liferay portal based web application. The application itself is simple, but useful. Basically there are only a couple of user roles, the librarian and borrowers. The librarian can add books to the library, check books out both for themselves and on behalf of others, check books in, and mark books as unavailable in the event they are lost. The screenshots below show the key pages of the web application.
We use this simple application to manage our own internal library which consists of about 1000 books that we have purchased or which team members have contributed over time.
It’s a simple application, and works great for our needs.
Recently we’ve also been helping some of our new team members develop there mobile application development skills, so we began creating Android and iOS mobile applications that interface with the library providing the same functionally as the web application and then some.
One of the problems with the web application is that we either need to have a computer available near the library (where we really don’t have space for it, so there isn’t one) for people to use to check out books or they need to remember to check them out when they get back to their desk. This inconvenience results in some lost traceability as people forget to do this, so books can go missing.
The problem of inconvenience is largely solved by the prevalence and functionality available in modern smart phones. Most smart phones provide fairly good cameras, and with the ready availability of image processing libraries we are able to use the camera to capture the barcode on the book, so now checking out a book is as simple as taking a picture.
Below are a couple of screen shots of the Android and iOS versions of our mobile Library apps.
Specifying the server address
Choosing a Global Software Development Partner to Accelerate Your Digital Strategy
To be successful and outpace the competition, you need a software development partner that excels in exactly the type of digital projects you are now faced with accelerating, and in the most cost effective and optimized way possible.
Sidebar menu (to select admin option)
Adding a book to the library
The book is now available
We can scan the ISBN or swipe on the UI to Check Out
We can see the book in You Borrowed
And also Checked Out
And we can scan the ISBN or swipe on the UI to Check In
iOS Login Screen
iOS My Books
iOS Preparing to Scan
iOS Adding a Book
iOS Added book available for Check Out
So now we have this nice, simple library system, and we thought: “hey, this is probably something that could be useful for others as well”. We’d also been looking for an opportunity to roll up our sleeves and get a little dirty with Docker by creating some practical containers, and so things fell in place for us to try our first “in a Box” project.
So, there you have it. Library in a Box
In some subsequent articles we’ll identify some of the issues we encountered while doing this. We also have a related sub-project going on that will help us better quantify the benefits of containerization vis-a-via Docker vs. virtualization vis-a-via a traditional virtual machine that we’ll be sharing. But before doing that we wanted to share the background. We’re also investigating whether we can make this available to the broader public if there is sufficient interest.
We hope you’ll find the articles interesting and informative, and would invite your thoughts, questions, and feedback as we share our experience with you.