Skip to content

Recent Articles


5 Pros and Cons of Appcelerator’s Titanium

Appcelerator’s Titanium is an open source development platform that allows to create native applications (mobile and desktop) using web technologies, such as JavaScript, HTML and CSS. The Titanium Mobile SDK is the #1 cross-platform mobile development solution in use today with over 250,000 mobile developers and 35,000 apps.
Without entering into the controversy on “native vs cross-platform”, you cannot not be interested in building mobile apps with a true native user experience, deploying them to multiple operating systems and managing them from a single code base and a single investment. I am, and I used the Titanium Mobile SDK for a few months working on a few prototype ideas and for a real project (Infostud Mobile).
Here are the main pros and cons based on my experience:


Rapid prototyping. Appcelerator’s Titanium actually “accelerate” the application development because allows you to create in a very flexible way, with a few lines of code and in a few hours what normally would require more attention and a few days. Regardless of the choice of developing by using native or cross-platform toolkits, you could always use Titanium to make a prototype to evaluate the user’s interaction with the UI due to its facilitation for rapid development.

Web-oriented. Titanium mainly helps the development when the app interacts with a web service since the application itself is developed by using web technologies. This had a great impact not only on simplifying the development process, but also on saving the overhead needed to elaborate the information exchanged through the remote communication.
A typical example is the use of JSON format for data transfer. JSON (JavaScript Object Notation) is a simple encoding of JavaScript-like objects and Titanium is a pure JavaScript API, so all you have to do is to assign the data received from the network to a local variable without having to write any data parsing, extraction, and conversion (unless there are some unsupported native JSON data types, i.e. dates).

JavaScript. It’s a language many developers know and enables more developers coming from a web development background to get into mobile app development. Most importantly Titanium reflects an intrinsic characteristic of prototype-based scripting languages that is the combination of flexibility and structure.

Cross-platform. This is not an automatic, guaranteed feature. You cannot say something like “write once, run on iOS and Android” (to paraphrase provocatively the well-know Java slogan). It’s therefore necessary to base the development of one of the two platforms and then implement the necessary measures to make the app also runs on the other one. But the advantages are obvious – you don’t have to learn two separate languages and you can reach a very high level of code reusability.

Growing community. Appcelerator has built up a community of 200,000+ developers who have used its cross-platform development tool to build more than 35,000 apps; has launched Open Mobile Marketplace for buying, selling and sharing modules, templates, design elements, extensions for web services; has attracted important investments ($15 million in funding for its Series C round) and has recently acquired Cocoafish to implement cloud services and functionality in its platform. Remarkable. Appcelerator is creating a great platform for a growing community and its best days are ahead of it.


Increasing complexity. The development complexities (and costs) rise more than proportionally to application complexity increases. The more complex your applications become, the more often you’ll have to deal with, on the one hand technical issues (random crashes, weird behaviors, annoying bugs, etc.), on the other hand a greater effort (code organization, MVC separation, multi-device support, multi-platform support, code readability, etc.).

No Freemium. Appcelerator provides StoreKit, a module to enable In-App Purchase to Apple’s App Store, but it’s a pain. Buggy, poorly documented and it seems to work only partially. Too unstable for production use. Having to renounce the freemium pricing model (apps that are free to download, but require an in-app purchase to be expanded) is not just a minor inconvenience since 72% of total App Store revenue comes from apps featuring in-app purchases.

Toolkit pain. At first there was only Titanium Developer but since last June there is Titanium Studio, an Eclipse-based IDE built on a modified version of Aptana that allows you to manage projects, test your mobile apps in the simulator or on device and automate app packaging. First of all, I sincerely hate Eclipse, yeah, Eclipse is free and the best open source IDE there is, but offers a very poor IDE experience. Most importantly Titanium Studio can go “crazy”, encounter weird glitches, stop printing console messages, but the worst thing is when the build process start to ignore changes. You have to continually clean your project every time you make changes or restart with a brand new project. A productivity tool that is uncomfortable and unstable is not a productivity tool and a development tool that is unproductive is not a development tool.

Flexibility limitations. All that glitters is not gold. At beginning you’ll love the well-defined Titanium API and you will probably love it even more every time you discover a simple property to enable behaviors that would require several lines of code on Xcode. But sooner or later you will face strange bugs and limitations. For example, if you want to apply a cell background gradient to a grouped table (a very common and easy task with Objective-C) you get that the grouped table becomes plain and the gradient color makes the table slow when scrolling, and you will have to use images… So at first you will save a lot of time but as more complex the project grows you’ll lose the saved time in fixing and workarounds.

Laggy. Obviously you can have the most smooth, fast and comfortable user experience possible only with apps developed with a native development environment. This is an obvious observation, but which cannot be omitted. Keep in mind that a Titanium application is the result of an automatic conversion process from web code to native code. Animations are noticeably laggy and apps are not responsive when return from the background. This is particularly evident with Android devices, less evident with iOS devices (especially those with A5 processor).


Just as in everything else, in every design approach, in every technological decision, there are advantages and disadvantages. During these months I have learned to know both and understand the contexts in which it makes sense to bet on Titanium. For simple, small projects Titanium is a good choice but if you’re looking forward to use it on robust apps choose native development environments. I also suggest Titanium as an excellent tool for rapid prototyping to turn within hours a mock-up into a prototype in order to evaluate the consumer interest or conduct usability tests.
However, the pros and cons must be evaluated on a case by case basis because their weight depends on the specific project that you are considering. Keys aspects to take into account are: benefits, costs, budget, development complexity, how necessary is the multi-platform support, how strategic is the project, how important is performance. You have to weigh each pro/con based on your specific priorities to determine what fits your needs the best. Appcelerator’s Titanium is a great option that should always be considered when you start a new project.


Working with Clients: You Already Have The Power

In the last month I worked on an important project for an important client about which I can’t write publicly for legal reasons (except to say that it has been quite a success in terms of downloads, rankings, users reviews on the one hand and client satisfaction on the other), but I want to talk about a lesson I learned about client work.

Product-based vs. service-based? No, I don’t want to deal with the pros and cons of working for clients vs. working for yourself. Anyone who’s done client work knows the inherent frustrations that come along with that and loves the creative freedom to design and develop projects his own way without any interference from client requirements.

When you work with clients, in any design decision you know that the main goal is to meet the client’s requirements rather than the needs of the end user. And you know that the time factor always win in the trade-off between quality and time. Quick-and-dirty? I guess you know what I mean.
I’ve often heard (and said) phrases like these: “if I had more time, I’d try to do this thing in a different way”, “If I did this thing on my own, I’d do it as I say”, ecc.

Well, I learned a valuable lesson during this project from a friend of mine: you can, you already have the power to do it! You can already apply your point of view.
There is no ideal condition to put your ideas into practice, each situation is the right one to do it!
You will always have to face some kind of constraints (even if you work for yourself), do not wait for the next project to follow this advice, do it now. It works!

Do not complain about your work situation, it falls to you to struggle free and use every available space to gain greater leeway.
“Words mean nothing. Action is the only thing. Doing. That’s the only thing.”. You will not be able to attract your manager by talking about how smart is your proposal, how modular is your approach, how elegant is your solution. Your manager will think only that it will take a long time, he’s attracted only by real things and your proposal is real only in your mind. Just do it! Make it real now!
Work hard behind the front line, surprise your manager and your clients! You just have to do it!

Stop complaining and work hard to change your job.
You can. You already have the power.


iOS 5 Tech Talk World Tour in Rome

On October 20, Apple announced the dates and cities for its iOS 5 Tech Talk World Tour 2011, giving developers from around the world the opportunity to speak with and learn from Apple’s own engineers in nine cities on three continents. The nine cities include Berlin, London, Rome, Beijing, Seoul, São Paulo, New York City, Seattle, and Austin. iOS Developer Program members only and limited to those who got a confirmation from Apple.

Read moreRead more


Steve Jobs’ legacy

Thanks Steve for teaching us…

  • …the difference between ‘good enough’ and better
  • …that people are at the centre of technology
  • …to think first about what is desirable to users and then to consider what’s possible with technology
  • …to focus on what truly matters and to keep it simple
  • …we can’t connect the dots forward, only backward
  • …the difference between a leader and a follower
  • …to believe in ourselves and push our life forward
  • …to think that we can change the world
  • …that “innovation is not about saying yes to everything, it’s about saying NO to all but the most crucial features”
  • …that design is not just “how it looks like and feels like, design is how it works”
  • …not to waste our time living someone else’s life
  • …the importance of quality and attention to detail
  • …that our imagination can become real through passion and determination
  • …to “keep looking, don’t settle”
  • …that compromise is a choice, not a requirement
  • …to see things differently

We’ll miss you.


The Perfect User

Since Skynet hasn’t yet become self-aware, since the human race hasn’t yet been exterminated by artificially intelligent machines, since end-users are still largely human beings, the technological progress now stands at a crossroads: reengineering all the software or eugenically engineering the human evolution?

This all stems from the fact that almost all existing software is designed for end-users with these requirements:

  • Memory of an elephant
  • Dexterity of a monkey
  • Visual acuity of an eagle
  • Navigation skills of a bat
  • Stamina of a camel

So at least in the future, as William Hudson says, does not fall prey to the temptation to believe that users

  • are working in a quiet, ordered environment with no interruptions or distractions;
  • will remember everything they have ever done on a device;
  • are motivated to solve any problems that come up without regard to their mental well-being;
  • have no need for breaks, meals or sleep;
  • only make mistakes through spitefulness;
  • understand the internal workings of the system just as its designers do.

The mythological perfect user is only a product of a bad design, so, once in a while let’s take a break and tell ourselves that the user is not stupid, it’s our design that’s wrong!


Simplicity vs. Customization vs. Empathy

The term “customization” is used to mean you are what you say you are
The term “simplicity” is used to mean what you are

Customization gives explicit user control
Simplicity gives explicit features

Customization is based on users preferences
Simplicity is based on users needs

Customization generates complexity
Simplicity always wins over complexity

Customization is a geek
Simplicity is a friend

Customization requires assistance
Simplicity is self-explanatory

Customization affects some demanding users
Simplicity affects all users

Customization is a calculator
Simplicity is a metaphor

Customization is a gear in the black box
Simplicity is an abstraction

Customization is a spaghetti condiment
Simplicity is an elegant suit

Customization can become the bad way to apply Personalization
Simplicity can become the bad way to apply Usability Read moreRead more

This website uses cookies to offer you the best experience online. By continuing to use our website, you agree to the use of cookies. | Close