Development

Docker, mobile, and putting things in boxes

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.

Screen Shot 2014 07 03 at 3 04 42 PM

Screen Shot 2014 07 03 at 3 04 13 PM

Screen Shot 2014 07 03 at 3 03 29 PM

Screen Shot 2014 07 03 at 3 03 48 PM

Screen Shot 2014 07 03 at 3 53 59 PM

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.

Login screen

Screenshot 2014 07 03 15 28 19

Specifying the server address

Screenshot 2014 07 03 15 28 45

Sidebar menu (to select admin option)

Screenshot 2014 07 03 15 29 57

Adding a book to the library

Screenshot 2014 07 03 15 31 11

The book is now available

Screenshot 2014 07 03 15 31 34

We can scan the ISBN or swipe on the UI to Check Out

Screenshot 2014 07 03 15 31 38

We can see the book in You Borrowed

Screenshot 2014 07 03 15 31 47

And also Checked Out

Screenshot 2014 07 03 15 31 53

And we can scan the ISBN or swipe on the UI to Check In

Screenshot 2014 07 03 15 40 55

iOS Login Screen

IMG 1212

iOS My Books

IMG 1216

iOS Preparing to Scan

IMG 1217

iOS Adding a Book

IMG 1218

iOS Added book available for Check Out

IMG 1220

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.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Vernon Stinebaker

More from this Author

Subscribe to the Weekly Blog Digest:

Sign Up
Categories
Follow Us
TwitterLinkedinFacebookYoutubeInstagram