For those of you who were not aware, both myself and another VML employee Heather Downing had the privilege to speak at the Prairie.Code() 2016 conference in Des Moines, Iowa at the end of this past October. While this conference enjoyed it's first year in existence, this did not diminish from the quality of speakers and content that was presented within it's sessions. I would like to extend my commendation to each and every individual who contributed to putting on this conference.

Below you will find a quick summary of the talks that I conducted as well as all of the relevant information/code samples that were accompanied with each. Enjoy.

Build a mobile application like a web developer using Ionic

My first session was a 4-hour workshop that covered the Ionic mobile platform. The goal at the end of this session was to educate each participant to the point that they could take the knowledge and skill attained during this session and build their own application.


Ionic is a hybrid mobile application framework. The term "hybrid" implies the fact that the applications built in Ionic create a digital handshake using web technologies (HTML, Javascript, CSS, etc) and native languages (Objective C, Java, etc). Essentially you build a single page web application that is hosted within a native wrapper. So you build the application like a web developer would, but export the application using XCode or Android Studio like that a mobile developer; all while writing one set of code and tapping into the benefits of each operating system.

The subject mater of my talk consisted of a similar introduction to the Ionic platform like that of the previous paragraph. From there I escorted each participant through the development environment set up process. Once the development was in place, we began building a simple application called "Who Paid Last?" During the development process of this application, each participant would have learned the following:

  • A basic understanding of Angular 2, the Typescript syntax, and how Ionic 2 uses these languages to it's advantage.
  • What an Apache-Cordova plugin is, and how you can utilize the power of these plugins to build applications with native behavior.
  • Building custom touch gestures, and how you can implement them within your interface.
  • Adding analytic support with the help of Mixpanel.
  • Finally build an application that is ready for a production release.


A major issue that I encountered within this workshop was the time that it took to debug each person's environment setup. While I felt extremely prepared during the planning process, things like IT security and preferential user setups that yielded errors were items that I did not account for. The time required to move throughout the room to help each person with their environment took an excess of two hours. This proved problematic as I had prepared four hours of content. As you would expect, I was then forced to move quickly through the content, skipping some topics, and not being able to take questions to effectively speak to the content that I was preaching. Ultimately this left the project unfinished at the end of the workshop. In effort to provide additional value to the participants, I finished the project through a series of screencasts.

I have been asked by several people if I will give this talk again, and I can honestly say that I don't know. I have a few ideas on what I could do differently, but in the long run, I cannot avoid the environmental technology issues that I encountered.

Code and Content

Below you find all of the code and content that was utilized for this session:

Building API's quickly and efficiently using SailsJS

The second session that I conducted was more of an educational session, versus the previous workshop-style session. This session touched on the NodeJS framework SailsJS, and I spoke on how you can use this lightweight yet extensible platform to quickly scaffold full-featured web applications and REST API's.


The NodeJS website defines it as "Node.js is a platform built on Chrome's JavaScript runtime for easily building fast and scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices." The power that NodeJS provides to its users is that you can take Javascript, the life blood of every front-end developers skill set, and write backend applications with it. SailsJS enhances this power by building it's platform on top of Express.js, which is probably the most popular NodeJS frameworks, and extends it with tools and features.

As I began to speak to these features, I was able to demonstrate these valuable tools by building a REST API in 15 seconds with a few Shell commands on my computer. From there, I began to speak to how each of the major features of SailsJS can be used in your applications:

  • SailJS utilizes Grunt for all of it's front-end asset management. This allows for endless extensibility to fit your developments needs; like adding SASS support which was done during my talk.
  • SailsJS uses the Waterline ORM and blueprints for developers to tap into a stereotypical MVC (model view controller) architecture without having to build each method or route by hand. Thus custom REST API endpoints can be created with a few Shell commands.
  • Logic called policies can be implemented to protect specific actions/routes/content from users who may not be authorized to do so.
  • Because it is a NodeJS framework, any NodeJS module or Node Machine can be injected to extend the base functionality.

Code and Content

Below you find all of the code and content that utilized for this session: