Ditching Titanium

Back in March, I posted my Thoughts on Titanium, which we were using at the time to develop Texas State’s iPhone application. Since that time, we’ve become increasingly frustrated with the system, and have finally decided to leave it behind and rewrite the application in a combination of native Objective C code and HTML/CSS/Javascript.

This isn’t a decision we made lightly. I actually resisted it for a number of months, even when some of the other developers on my team were lobbying pretty strongly for it. The promise of Titanium, which allows developers to use Javascript to create native applications for iPhone and Android platforms, was great. Unfortunately, it has never lived up to that promise for us.

The first reason we decided to leave it behind was Apple’s Developer Program License Agreement. When iPhone 4.0 was released, the Agreement was amended to prohibit using intermediary layers like Titanium. The folks at Appcelerator quickly moved to quell their customers’ fears, pointing out that Apple was still approving Titanium-made applications. While it is true that Apple hasn’t lowered the boom yet, these apps still violate the letter of the agreement, and could therefore be pulled from the App Store at Apple’s whim. Further, when RunRev, a company that creates a development tool similar to Titanium, tried to reach an official understanding with Apple, Steve Jobs made it very clear that Apple wasn’t interested. Given this level of hostility to other development tools, staying with Titanium would obviously increase the risk that we’d run afoul of Apple in the future.

The second, and more important, reason was this: Titanium’s engineering is just not good enough for our purposes. It works great for small-scale projects that people want to get done quickly. But as we have tried to build large-scale projects, we have repeatedly run into problems that we would spend hours trying to solve, only to find that there was an issue in Titanium’s code that we couldn’t work around. New versions of the software would cause portions of our code that had worked fine before to stop functioning. Version 1.4 of their framework was released well over a month after they had originally promised it.

As one of the programmers on my team put it: “When I work in [another development environment], I’m 99% sure that any problems I have in my program are because I’m doing something wrong. With Titanium, I’m only about 50% sure.”

To be sure, the folks at Appcelerator have taken on a huge technical challenge, have ramped up quickly, and are working as hard as can be to make their product feature-rich. But after months of frustration, we’re not willing to keep investing in a system that keeps us so far from our programming happy place. Objective C, here we come!

Training Registration System

At the University where I work, there’s always a ton of Professional Development activity going on around campus, most of which is centered on training sessions for which people can register. That has always been an arduous, labor-intensive process, with real live humans handling every aspect of managing those registrations — reporting on class sizes, processing registrations, processing cancellations, maintaining a waiting list, communicating with attendees, etc.

To ease that chore, I’ve started work on a piece of software that manages all of those common tasks, driven by the requirements of our training organizations. So far, it allows a user to register for a class, cancel a reservation, subscribe to a webcal calendar that shows the training for which she has registered, download an ICS file to put the event on an existing calendar, receive email confirmations of registrations, to sign up for the waiting list for classes that are full, and to receive email notification when they get moved from the waiting list to the class roster. It’s also the most rigorously test-driven development I’ve done to date, so the code should be of good quality.

I’m managing it as an open-source project, so if you’re comfortable with Ruby on Rails and are interested in jumping in, or would like to download a copy to fool around with, you can visit the project on Google Code. I’d be delighted to have other contributers if it turns out to scratch anybody else’s itch as well. It is still very much geared toward folks who know a little bit about Rails and are willing to customize it to their needs. If that’s not you, you might want to steer clear for now.

More Good Thoughts on Games and Work

I wrote a piece about a year ago called Workplace Motivation and Game Mechanics which summed up some of my ideas for bringing some of the compelling character of video games to the office. Since then, some much smarter people have been doing some thinking and experimenting with similar ideas.

Jane McGonigal gave a terrific talk at TED called “Gaming Can Make a Better World”. It’s well worth the 20 minutes it takes to watch:

Additionally, I’ve started reading Total Engagement: Using Games and Virtual Worlds to Change the Way People Work and Businesses Compete. It covers the authors’ experiences in this area, starting with poolside conversations and ending up with forming a company around these ideas. It’s a good read so far.

Based on these, it looks like the invasion of games into the workplace has the potential to create some important productivity gains and is already underway. It should be fun to see what the next decade brings.

Brief Thoughts on the iPad

I’ve had intermittent access to an iPad for about two weeks now through work, and finally feel like I have a grasp on what it is, what it’s good at, and what it lacks.

First off, the iPad doesn’t do everything. It’s not a full-on replacement for a computer. In fact, you can’t even get it running without a computer to which you can connect it. It lacks a camera, so you can’t use it for videoconferencing or photography. While it’s better for content creation than the iPhone, thanks largely to its bigger screen and support for Bluetooth keyboards, it includes no facilities for printing out the content you do create. For that, again, you’ll have to rely on a computer.

That said, it does 90% of what people use a laptop for, and does that 90% beautifully. Web surfing is a smooth, fast delight. Dealing with email goes smoothly and quickly. The Calendar and Map applications are lovely to look at, and a pleasure to use. Listening to audio and watching video, while hampered a bit by the monophonic built-in speaker, is likewise a pleasure. The vibrant high-resolution screen makes it great for showing off photography. (In fact, I’ve already heard of a graphic designer friend-of-a-friend who got a job because he’d loaded up his portfolio onto the iPad to show it off.) Writing works great, especially with a hardware keyboard. And of course, there are a wealth of applications designed for the platform that make it even more versatile and capable.

Is it for the person who likes to tinker with computers? Probably not so much. Apple takes great pains to keep the iPad and its related platforms, like the iPhone and iPod Touch, locked down and controlled. On the other hand, this is a device I could give my Mom and expect her to actually use it. If one wants to do the things the iPad does, there’s not much way to do those things better, faster, or more intuitively.

On My Mind: Tech, Crisis Response, Maps, Crowd-Sourcing

I’ve been having some interesting talks with my friend Ben Mengden lately. He graduated with a Geography degree, has been delving into architecture over the past few years, and is really interested in the developing world and how those disciplines can be applied there. I have a deeply rooted interest in computing, the Internet, and how new technology can be applied to and change our lives for the better. Lately, our fields of study have started overlapping in some really interesting ways.

I love Wikipedia. As Clay Shirky discusses in his fascinating book Here Comes Everybody, sites like Wikipedia harness the power of tens of thousands of people willing to spend 5 minutes to improve something. There aren’t many people who will write an exhaustive article on a subject. There are, however, plenty of people who will be happy to add a sentence or two, contribute a photo, or exercise their pedantic tendencies and fix a bit of grammar. As a result, Wikipedia, while not academically authoritative, has a body of knowledge that is vast, immensely useful, surprisingly well-referenced, and pretty much unprecedented in human history.

Thus I was delighted to discover OpenStreetMap, an effort to bring that same community information-building ethos to mapping. After having been locked into the fixed, licensed data that MapQuest, Google Maps and Yahoo Maps provided, it was pretty amazing to be able to whack the “Edit” button and add speed limit data to my street, to remove roads and points of interest that weren’t accurate, and to make a note of the various playgrounds around town. When my wife and I went to Switzerland last year, we were able to load up our GPS with free OpenStreetMap data before we left, saving us a substantial sum.

But better than that, OpenStreetMap has been enabling people around the world to share geographic data in unprecedented ways. When the recent devastating earthquake struck Haiti, crisis response teams were able to collaborate with government agencies, volunteer translators and mapmakers around the world by using OpenStreetMap and other crowd-sourced crisis response systems like Ushahidi as clearinghouses for information on survivors, refugee camps, water supplies, road conditions, and more. (See this video for more details, or this one for details on how you can help map roads.)

In addition, Ben has been exploring Architecture for Humanity, a humanitarian organization dedicated to providing professional architectural design services to folks in need. They have created the Open Architecture Network, a service dedicated to open source architecture that allows architects and designers to share their plans and designs in CAD form over the Internet. Thus, builders helping to rebuild regions devastated by natural disasters now have access to a wealth of professionally designed building plans, and can even have custom plans created by an architect far from the site of the crisis. And get this: efforts are well underway to create gigantic 3D printers that can take plans and build a house from them automatically under computer control in a couple of days.

My wife laughs at my because I drive around with our GPS on even when I know where I’m going. “It makes me feel like I’m living in the Science Fiction future,” I tell her. But even more than having a robot voice tell me where to turn, being able to reach out across the Internet and help people half a world away makes me really excited to be living in this era of technological wonders.

Thoughts on Titanium

A couple months back, my team at work started working with Appcelerator’s Titanium, an open-source system for developing iPhone applications that, instead of requiring one to learn Objective C, wrapped up the iPhone APIs so that they could be accessed from familiar web languages.

The version that was current at that time made it very easy for people with web development backgrounds to create native iPhone applications. It did so by opening a web view for every screen of the application and then letting one author HTML, CSS, and Javascript that ran within that context. By layering native controls on top of those web views, one could make decent-looking applications quickly in a way that was intuitive for those of us who live and breathe these technologies already.

Unfortunately, this was not an efficient approach. Having so many web views in an app caused it to run slowly and take up a good deal of memory. Additionally, apps written with HTML/CSS instead of more traditional methods tend not to look quite right, since they make less use of native controls and use more web-like design.

Appcelerator’s solution? With their latest releases, they’ve changed the architecture pretty dramatically. Instead of basing everything on web views, applications now use native controls exclusively, only falling back to web views when you’re actually doing something on the web. The application UI is created entirely in Javascript, and HTML and CSS now have very little, if any, place in an application.

The upside to this is that performance has been improved by an impressive amount. Apps written in Titanium are generally as responsive as apps written directly with Objective C and Apple’s tools. Additionally, all of the UI elements are now dynamic, so that one can make adjustments to on-screen objects at any time — not just when a window is initially rendered. Managing the scope of variables makes a lot more sense in the new version than it used to, and requires far fewer chintzy hacks to pass data from place to place.

The downside, sadly, is that Titanium loses a portion of the ease-of-use that made it attractive for us to begin with. All of the UI we had done with HTML/CSS now has to be rewritten using native controls, which are a good deal more cumbersome. Essentially, one is writing much more directly to the iPhone API, but just using Javascript instead of Objective C to do so. (Which is still a win, in my book, as I have a pathological hatred of having to manage memory for myself.)

We’re currently pushing forward with the transition to the new way of doing things, and probably have about 40% of our prototype app rewritten for the new system. The new version feels generally tighter and more professional, but is definitely taking longer to write than was the case with the old methods. And while I’m still very impressed and happy with Titanium as a product and feel that the tradeoffs were the right ones to make, it does now feel much less like iPhone programming “for the rest of us.”

Tweeku Launches

Congratulations to my friend Greg Pierce, who launched Tweeku today, a super-nifty iPhone app he wrote for composing Twitter messages and other short-form texts (including haiku)! I’ve been testing it off and on for a few weeks, and am really impressed with what he’s done with it. Here’s the company line:

Tweeku is a twitter writing tool. Do you tweet Haiku? Short-form poetry? Or just care about improving the quality of your status updates? Then Tweeku is for you!

Tweeku is not a traditional Twitter client. It does not download your tweet stream, or show you trending topics. Tweeku lets you focus on writing. Store unlimited drafts, and tweak them until you are ready to post.

Go beyond character counts! Tweeku analyzes your text, counting lines, syllables, mentions and hashtags — and provides easy two-click Thesaurus lookup and word substitution.

Features

  • Write notes, save drafts, online or offline. Publish later when you are ready.
  • Not just character counts but line, syllable, mention and hashtag counts.
  • Easy Thesaurus lookup and word substitution.
  • Multiple accounts, publish to multiple twitter accounts.
  • Connects with Twitter OAuth, no need to store your password in the App.
  • Email your drafts.
  • Send drafts to Tweetie.

app_store

You Have Unlocked an Achievement: Prognostication

A while back, I wrote a post on Workplace Motivation and Game Mechanics, where I speculated on the efficacy of using game systems, like achievements, awarding points, high score lists, etc., to help motivate people in the workplace.

Last week at the DICE Summit, Carnegie-Mellon Assistant Professor of Education and Technology Jesse Schell gave a terrific talk where he takes some similar ideas and goes wild with them, applying them to teaching, marketing, government incentives, and more. Really interesting, thought-provoking stuff, and well worth a viewing if you’re remotely interested in any of these areas: