Featured Developers – William Martinez & Kosuke Isobe

Abstract cloud computing service background. Technology and data concept. 3D Rendering

Editor’s note: Sharry Stowell is the editor of Learning Titanium, where he frequently comments on the latest contributions of the Titanium community.

Hey guys, hope you’re playing with the latest release of Titanium as there are have been some great features added including ACS (Appcelerator Cloud Services). This week my featured developers are from different sides of the globe; William Martinez is based in the US and Kosuke Isobe is from Japan.

They have stood out from the crowd with their app development skills and helping to contribute to the Ti community. I’ll talk about William & his FaceTouch App and then I’ll discuss Kosuke’s contribution of the TiPlatformConnect OAuth library.

I noticed the FaceTouch App a number of months ago via the Q&A section, I downloaded it & had a little play – I loved it, my 3 year old even loved it! I updated to the full version a few weeks ago & noticed a number of new features, the great UI is so easy to use. If you haven’t already, I advise downloading it free from the AppStore.

“Facetouch is a really funny photo booth studio! You have hats, wigs, glasses, hair, beards and a lot of fashion accessories to make people or pets look just awesome in your pictures! Transform your pictures in a fancy and simple way. Facetouch has a lot of real-like high definition, carefully and well-designed objects that include even shadow … Just chose an object and zoom it, rotate it, move it and scale it to make it fit in your picture!”

William’s team (@inzori) has worked with clients from all around the world for the last 15 years. They speak English, Spanish and Swedish fluently.

Interview with William Martinez

1) What gave you the idea to create your FaceTouch app?
We’ve created a small puzzle game for my kid where you have to place shapes where they belong, recognize objects like forks, knives and glasses and arrange them on the table, etc… That was the kick off of FaceTouch.
Once we learned how the drag and drop, scale, rotate, flip, place, etc any object with Titanium, we found that we had built a nice engine to ‘easily’ build these kind of applications over it.

We wanted to create some realistic face booth application. We found that most of the existing similar applications at the appStore work with cartoons, drawings and poor quality graphics… no real life pictures or accessories… some are funny but you get no real looking results. … we decided to go for it.

2) Why did you choose the Appcelerator Titanium route?
Titanium is the easiest and fastest way to create an iPhone/iPad high quality application. Although the iOS SDK is not 100% mapped, you have almost everything you may need to deliver your application to the AppStore, and you may find or create a module if you don’t.

3) How long did it take to design, create, test & deploy the app?
We decided to co-work with a professional design this time.
The results are amazing as you can see, a full HD application ready for iPhone and iPad, however, it took a lot more time to finish the application as designers are really … how to say it… they like their work to look not just good but perfect.
As you know we (developers) are not that kind of person, we want things to be finished fast and it’s ok as long as they work as supposed 🙂 … so … as the designer went over and over again through the same screens, changing colors, changing buttons and moving a pixel from here to there… we had the time to create more and more features, create ObjectiveC modules, etc.

So, it took almost 2 months to finish the first version. Our beta testers did a great job! They were our friend’s kids, my kid and ourselves that had a funny time doing our “job”.

After 3 months we decided to go live at the AppStore and continue working with a lot of new objects and functionality for a new version.

4) What parts of the Ti API did you use to create the user interaction?
Well… I can tell you which parts we did not use… that would be easier! I think we have used almost every part of the API but Android specific parts.

5) Have you developed any other apps in Titanium if so, what are they?
We have developed two other public applications:

  • Undercover Media – a highly customizable application that records audio/video and takes pictures without being noticed. You can even browse the web while you are recording video!
  • Visual Noise – a free application that is part of a bigger project that may help people with hearing problems. This application is really a rip of the alert system where a vibration/visual alert is raised when a noise peak is detected. We decided to deploy it to the appstore and see if we could get some feedback and suggestions from users.
  • Private applications – we have also developed three private applications like a payment gateway for a mayor online payment company and two other very specific applications requested by clients.
  • MarketPlace – we have developed some Ti modules.

Real world app code example

William has kindly sampled some of his code from within the actual help to other Ti Devs:

[app.js gist]

Titanium.App.ISIPAD = Ti.Platform.osname == 'ipad';

var ff = {};
ff.app = {};
ff.ui = {};

// create tab group
ff.app.tabGroup = Titanium.UI.createTabGroup({
backgroundColor: '#000'

// create the main home screen (this function creates the home screen and is defined in main.js)
ff.app.mainwin = ff.ui.createMainWindow();

// create loading window "splash"
ff.app.loadWin = Ti.UI.createWindow({
tabBarHidden: true,
navBarHidden: true,
backgroundImage: Titanium.App.ISIPAD ? 'images/background_splash_ipad.jpg' : 'images/background_splash.jpg' ,
fullscreen: true,
url: 'programs/splash.js',
tabGroup: ff.app.tabGroup, // pass the main tabgroup
mainTab: tabMain // pass the tab where main is

var tabLoad = Titanium.UI.createTab({
var tabMain = Titanium.UI.createTab({



[programs/splash.js gist]

var splash = Ti.UI.currentWindow;

// do whatever you want.. animations.. put a label "loading..." and animate it (remember to play with delays and durations to make this screen last longer)

// and when you finish loading, just change the active tab.


Kosuke Isobe – TiPlatformConnect OAuth Library

Kosuke’s a web programmer for internet media business called OpenSmile based in Japan. He’s only been invovled in Titanium for a year after he got introduced to the Donayama blog. He has worked on a few Titanium Apps (Japanese Only), such as Prize info and Rock-paper-scissors game.

Have you ever wanted to allow a user to grant a third party site access to their information stored with another service provider, without sharing their access permissions or the full extent of their data, well read on….

I came across TiPlatformConnect on Twitter, it was a fork of @ebryn‘s great twitter-titanium library on Github. Kosuke explained to me that he “required OAuth of Twitter in my app. At such time, I found twitter-titanium. This library is very easy learn, I was able to incorporate my app immediately. Then, when connecting to other platforms, I have continued to use this to extend the library”.

He has expanded it front a Twitter OAuth library to the following:

  • Tumblr
  • Mixi (Japanese SNS)
  • Foursquare
  • Flickr (in development)
  • Github
  • Linkedin
  • Google
  • Etsy
  • Hatena

If you want to expand the usage of this great resource, please fork it and share all your findings with the Ti community.

A big thanks to my featured developers!

Code Strong


  1. I’d love to know why William Martinez and team didn’t create an Android version of their app simultaneously.

    The promise of Titanium is to create a single app on both iOS and Android.

    Does Mr. Martinez and team not feel that the Titanium support on Android is good enough or was there some other reason they only went on iOS to start with?

  2. @Grant: I don’t want to speak for the authors, but I’m guessing they made use of image masks in this app. Titanium supports image masks for iOS but not for Android. If I’m not mistaken, masking is only supported in native Android via their self-contained rendering context class “Canvas”. They can’t be used on basic components, like the ImageView.

  3. My guess the reason why it is iOS only is because they are selling it at $1.99 and it is hard to sell anything on android platform (that is what I heard) unless if it is subscription based..

  4. @syedhs: If so, they could always raise the price, so maybe not the case. I’m not techy at all, but think that Tony wrote some sensible reason for this:)

Comments are closed.