Live data from Hacker News

Appcelerator Titanium: From a developer's perspective

tannerburson.com

31–40 of 60 posts

Re: Appcelerator Titanium: From a developer's perspective

#32
post #3

I had a similar experience with the platform. I was very excited, browsed through the APIs to check the required features were there and jumped in. It then took ages to get the right versions of SDKs/XCode and Titanium installed, which also involved searching though forum posts and patching files. Finally I got the "Kitchen Sink" app working. All was good. I started implementing my app and quickly became flummoxed by…

Titanium is much, much more tolerable and sane if you ditch Ti.include and use its CommonJS Ti.require() instead.

Re: Appcelerator Titanium: From a developer's perspective

#33
post #17

Earlier quoted context omitted.

I'd be interested to know what you consider the core platform problems because I've never run into anything that couldn't be worked around. Don't get me wrong. I sympathize. I lost several nights of sleep because I was so angry after a day of using Appcelerator that I literally couldn't calm myself down enough. There were days when I'd decided to not only stop using Appcelerator but to make it my life mission to tell…

Here's two "show stoppers" that made me stop experimenting with Titanium. 1) If you have a custom UI, dragging the window around is painfully slow and erratic. Resizing the window is actually so slow it's unusable. 2) The built-in zip function doesn't seem to work with files over ~200 MB on Mac OS X. I tried reaching Titanium, failed, and moved on.

I think most of us here mean Titanium Mobile when we say just "Titanium." Their desktop platform seems to have received much less attention from them, and is of much more questionable benefit than the mobile one, which doesn't have many alternatives whereas on the desktop there's Qt and all sorts of other things available.

Re: Appcelerator Titanium: From a developer's perspective

#34
I'm current knee-deep in building a Titanium app for iPhone, and my experience has roughly matched tannerburson's, however, I have had far less difficulty with some aspects. For instance, I am using one line JavaScript IFs with no warnings.

The API docs are incredibly sparse, however, helpful enough for the nuts and bolts of dealing with our JSON API, storing to plist files and using the built-in HTTP client. I am currently wrestling with structuring our app such that it fits to one of the paradigms given in the Kitchen Sink; this has been incredible tough. As noted by others, sliding and scrolling behavior is erratic.

Our current iPhone interface is a fully manifested jQtouch web app, and I have pushed the performance of the app as far as possible. It isn't terribly slow, however, it one of the main bottlenecks users have in interacting with our service.

I originally set out wrapping our jQtouch app in PhoneGap - a simple task. However, given the way that PhoneGap works, the performance was no better than the current web app. I then completely rebuilt the app in jQuery Mobile (Alpha 3 at the time), loaded it into Phone Gap and discovered that the interactions and load time were slower than my original jQTouch app. This isn't to knock jQuery Mobile or PhoneGap; rather it is a reminder that for a full jQuery Mobile or jQTouch app you are looking at loading 140-200Kb of JavaScript every time you open the app. If Nitro ever comes to homescreen apps, this will be less of an issue.

The long and short of it is that while PhoneGap certainly gives you infinite flexibility in what the UI of your app can do, you have to be vigilant about keeping your load times down by minimizing frameworks. If you already have built an iPhone web app that meets your performance requirements, load it into PhoneGap.

Alternatively, if you want a fast, lightweight app with a UI that mirrors one of Titanium's demos given in their Kitchen Sink, then I believe that the struggle is worth it. All of my commentary is working under the assumption that you have no Objective-C experience.

I recommend downloading the app Wunderlist to get an idea of the extent to which one can customize a Titanium app.

Re: Appcelerator Titanium: From a developer's perspective

#35
I have been using The" rel="nofollow">http://the-m-project.net/>The M Project for several months while building a web-only mobile app, currently in private beta and so domain-specific as to be useless to the general population. The framework builds on best-of-breed frameworks node.js and jquery mobile. Javascript ftw! The core developers hang out in IRC, or at least jump on when someone pops up with a question.

Turns out, they also have phonegap support, so I could deliver an app, but that sounds like more of a headache than its worth.

Re: Appcelerator Titanium: From a developer's perspective

#36
post #20

"It’s only syntax/static checking is done via JSLint with a pretty arcane set of rules. Want to write one line if statements? That’s a warning. A for loop without checking for property existence? That’s a warning." Someone hasn't read Javascript: The Good Parts.

The JSLint step is optional. I build my Titanium projects via the commandline (I don't use the IDE thing at all) which bypasses JSLint. I use the more reasonable JSHint as integrated into vim, not as part of the build.

This is the line that builds and runs my project:

  /Library/Application\ Support/Titanium/mobilesdk/osx/1.6.0/iphone/builder.py "simulator" "4.2" /Users/jehlke/workspace/titanium/Manabi "org.manabi.mobile" "Manabi"
You just need to setup the project inside the Titanium Developer app, and then you can invoke it with this command from then on.

Re: Appcelerator Titanium: From a developer's perspective

#37

Thanks for your feedback. Certainly lots of issues that we can and do plan to address. On the tools side, as several people have mentioned below, we are releasing a new IDE this week called Titanium Studio. This release will address two critical areas that you identified in your post: debugging and overall tooling stability. The IDE itself is based on Aptana Studio, which has several years of solid development behind…

I appreciate your comment, and it's great that you're reaching out to the developers using your platform. I'm excited to try out the debugging features of Titanium Studio, and hopefully it's more transparent in the steps it's taking to build an application as well.

Your second paragraph rings a bit hollow though. I'm sure you all are committed to growing the platform, I'm sure you're making investments. What software company isn't trying to move things forward? But as a user, I frankly don't care about how much better things will be. I just want to get things done, and the current state of your product makes that difficult. Worse than that, the current track-record of development (as witnessed by may comments here!) doesn't show a lot of progress.

I earnestly look forward to seeing improvements in the near future, as I have an application to deploy and support!

Re: Appcelerator Titanium: From a developer's perspective

#39
So glad to see more people pointing this out. Titanium sounds like a great idea and they market it well, but when you look closer you quickly discover that it just fails to deliver. Sadly they seem too focused on spending VC cash on adding bells in whistles when their core functionality still doesn't work. Here are a few examples.

Running their sample app. This is the first thing every developer does, so you'd think they'd have nailed this much, right? Sadly, no. Check out all the forums posts about people struggling to get KitchenSink running:

http://developer.appcelerator.com/questions/search/kitchensi...

Some of that is the complexity of getting the right 3rd party developer tools installed. But often projects will randomly stop compiling. Instead of fixing the underlying problem, this is their workaround (it's not just KitchenSink, it happens to your projects too):

http://developer.appcelerator.com/question/53821/kitchen-sin...

They don't seem to have anyone who monitors their forums. When core functionality breaks and people report it, nothing gets done about it for months, even when the fix is as simple as whitespace. This was reported in Oct, and a pull request was submitted in Jan.

http://developer.appcelerator.com/question/82691/run-on-devi...

It was finally fixed last month:

https://github.com/appcelerator/titanium_mobile/commit/510fc...

Open source means the community should be able to pitch in, but there are 16 open pull requests from the last 2 months, none closed or even commented on:

https://github.com/appcelerator/titanium_mobile/pulls

New features are rolled out with sparse documentation and then abandoned. Need to style a bunch of views, try JSS - except it's not documented in detail anywhere. But maybe they dropped JSS and are working on Helium?

http://developer.appcelerator.com/question/91331/jss---class...

Or not. Helium hasn't been updated in months and still isn't documented anywhere on the Appcelerator site. So who knows.

There are many other issues, of course. Ultimately you end up having 3 options: (1) pay them a bunch of money for support, (2) spend more time fixing their software then working on your own code, or (3) just writing native apps for the various platforms (or native web wrappers with HTML core).

I wouldn't mind paying for support if the product worked great, but paying to get support for something that's broken to begin with is frustrating. It's ultimately easier to just find alternative technologies.

Re: Appcelerator Titanium: From a developer's perspective

#40
I've been using Titanium for 2 months now while developing a prototype version of our iPhone application (Android later), and while I share the author's sentiments on a number of issues, I'm fairly pleased with the results so far. I'm not an Objective-C guy in the least, but am reasonably good with JS, so it's a great way to go native.

That said, some comments: - JS Warnings. It's true that one-line ifs, property existence checks, function closure suggestions, etc. can get a little annoying. My solution is to write JS which is 100% JSLint compatible, which is fair IMO.

- Titanium Warnings. These get annoying. I get dozens of "[object TiUIView] has an auto height value of 0, meaning this view may not be visible" warnings which are completely useless and don't identify the offending View for me to fix. Also, I get about a dozen errors like ": CGContextDrawImage: invalid context 0x0" which give me no indication which is the offending image. Etc.

- Performance. While native, our application runs a little sluggish and certain views are choppy when scrolling, and some style properties have bizarre rendering behaviour (layout: 'horizontal', width / height: 'auto', etc)

- Minor Revisions. The author is right, some minor revisions introduce pretty bad issues. 1.6.0 introduced some very noticeable performance degradations in TableViews, so we're still on 1.5.1 for now.

- Documentation needs work. The API reference is lacking any mention of certain parameters, which is frustrating. The wiki has more detailed information and has essential reads to understand things like TableViews, but I didn't find this resource for several weeks into my project. Many undocumented side-effects exist, like quirky behaviour on horizontal layouts, etc. Here's an example of the kind of confusion which results: https://appcelerator.lighthouseapp.com/projects/32238/ticket... The "headerPullView" feature for pull-to-refresh is currently undocumented magic.

- Barcode support is disappointing. Titanium+ introduced Barcode support, but does not support the usual 1D barcode. The additional libraries that exist (TiBar, zbar, etc.) are very difficult to compile in without XCode hackery, and sometimes don't work on the devices themselves, making debugging very difficult.

- Bugs in XHR with Content-Type and passing Arrays, requiring workarounds when integrating with Rails. Arrays get sent as "( key1: value1\n key2: value2\n)\n" .. seriously :)

- Titanium Developer required me to click "Launch" to start the application until I read Gene Tsai's comment on the original article which gives you command-line aliases to start your application. Awesome tip :)

At the end of the day, Titanium Mobile is a great solution, but be prepared to be patient while the platform matures, and to get creative in architecting alternate solutions when your initial approach doesn't work. I'm confident the wrinkles I point out above will be ironed out in time.

Post reply on HN