Clifton Labrum designer and developer living in Woods Cross, Utah. During the day, Clifton is the User Experience Manager for a Silicon Valley tech company. By night, he runs Labrum Design Co. where he designs, builds web and iOS applications in his free time. He’s also learning to fly airplanes and enjoys being with his wife and three children.

“.. Titanium is really good at making iOS technologies really easy to use…”

Interview with Clifton Labrum at Labrum Design Co

How did you get involved in Appcelerator Titanium?
When Titanium was brand new, a co-worker introduced it to me. We had both been searching for a good way to pick up iOS development without having to learn Objective-C.

Please explain what the Pilot Pro does & who is it aimed at?
Pilot Pro is a digital logbook for pilots. Pilots needs to track their flight time for a variety of reasons, and a digital logbook is a supplement and backup to a traditional paper logbook.

What gave you the inspiration to built it?
As an aspiring pilot, I began shopping around for a digital logbook and wasn’t impressed with anything I saw. I wanted something with a great user experience that was affordable. I decided to build what I needed.

Did you have any obstacles along the way?
Titanium is a fantastic tool for iOS development, but there are always little things that make it difficult along the way. Sometimes you are trying to do something completely unique, and there aren’t examples or API documentation to get you going. You just have to experiment and abstract your problem until you can compare it to things others have come up with. There is also the occasional Titanium bug where an object in the API doesn’t behave like it should, or JavaScript hacks are required to pull something off.

Are you using any other services or modules?
I purchased a great Dropbox module in the Titanium Marketplace to do cloud sync of the data in my app. I also used a JavaScript-based graphing utility called Flot to draw the graphs in my app. I built a web app that syncs with my iOS app as well.

Do you have any other plans to develop for Android / BlackBerry?
I am thinking about delving into Android development (should my app be in sufficient demand), but I have no plans to develop for Blackberry.

How long did it take to design, implement, Test & deploy?
All-in-all, the development process for this universal app was about 3 months (part-time). I found that most of my time was spent on building and finessing the UI. It’s very time consuming. Titanium is really good at making iOS technologies really easy to use, but building a custom UI is quite tedious.

Do you have any other apps you’ve developed it Titanium?
I have two other aviation-related apps that I built with titanium: Air Distance and Flight Plan


  • Available for both iPhone and iPad (buying the app gets you both)
  • Sync and backup your logbook for free with Dropbox
  • Sync with our free web application available at
  • View an extensive Dashboard with all your flight time
  • Explore your flight time with an interactive graph
  • Monitor your landing and approach currency
  • Search your logbook with our powerful filter
  • Import your logbook from another provider with our web app

Also, it logs the following:

  • Departure, destination, flight duration, date, distance flown, number of landings (day and night), remarks and notes
  • Aircraft registration, make/model, aircraft category & class
  • PIC, SIC, Cross Country, Night, Solo, Instrument, Simulated Instrument, Simulator, Dual Given, Dual Received, High Performance, Turbine, and Complex
  • Approach type, quantity, runway, and airport


Cliftons Ti Codeshare

How I used Flot to create graphs in a webView, and then allow the user to tap the data points to generate a native popup: [source]

//Graph webView with Flot implementation 
var timeGraph = Titanium.UI.createWebView({ url:'timeGraph.html', touchEnabled:true });

//Graph popup; done with native views that get data from the webView (see the 'graphPopup' event)
var graphPopup = Ti.UI.createView({ ... });
var graphPopupHours = Ti.UI.createLabel({ ... });
var graphPopupDate = Ti.UI.createLabel({ ... });

//Listen for taps on the graph inside the timeGraph.html file		
Ti.App.addEventListener('graphPopup', function(data){	
	//Set the hours and date values
	graphPopupHours.text = roundNumbers(data.hrs);
	graphPopupDate.text =;

//Inside the timeGraph.html file for the webView above
<script type="text/javascript">				
		//Flot Graph	

			//Data Plotting Function		
			$.plot($('#placeholder'), [], {
		$('#placeholder').bind('plotclick', function(event, pos, item){ 
		        //Send this back to native code to do a native popup
		        Ti.App.fireEvent('graphPopup', { hrs:item.datapoint[1], date:item.series.theDateLabel[item.dataIndex] });


Pilot Pro app Site