Livetanium

Our latest experiment, Livetanium, lets you do realtime prototyping when creating Titanium apps. For the lowdown on why this is a good idea, check out this article!

We're proud to announce our latest experiment - Livetanium - realtime prototyping for Titanium Mobile.

Made out of titanium, nodejs and unicorns, our Livetanium library lets you code Titanium Mobile apps and see changes in realtime. It uses a nodejs server to pipe filechanges to the app, and these changes are applied in realtime. It's iPhone only at the moment, but works in both the simulator and on the actual device. You can see a quick walkthrough here or check out the source.

Please try it out and let us know what you think!

Posted by Jacob Waller 

17 comments

Dec 03, 2010
J said...
Amazing!
Dec 03, 2010
Fredrik said...
Lysande! Har inte hunnit undersöka det så noga men betyder det att jag t.ex. skulle kunna installera en app på min egen telefon och en demo telefon som jag kan ge till en kund så att dom sedan skulle kunna se koduppdateringar av appen "on the fly"?
Dec 05, 2010
Jacob Waller said...
@J Thanks!

@Fredrik You were asking if Livetanium lets you create an app and install it on your client's device to let them see code changes in realtime. At this time, the answer is unfortunately no.

You could of course run the nodejs server on an online server to let it serve any device in the world. But since the Resources directory of the device is non-writable and we can't easily redirect Ti.include, Ti.open and the lot to our downloaded files, I can't see how to achieve this at the moment.

However, I'll get in touch with the Appcelerator guys to see if we can figure out a way of allowing such over-the-air live updates - that would be incredibly awesome!

Dec 05, 2010
Fredrik said...
Nice! I think it would be a nice way of prototyping in some cases. To quickly test diffrent features and stuff on the fly.

Good job on Livetanium btw.. :)

Dec 06, 2010
SJ Singh said...
I asked on the appcelerator thread but not sure if you saw it but I was wondering if its possible to use this with normal style of coding, without the use of the K variable.

Off topic, your blog is awesome! I learned a lot from it, especially how powerful YQL is :)

Dec 07, 2010
Jacob Waller said...
@SJ Singh
Sorry, I thought I hade replied there, but must have missed it. At this moment, you have to use the K variable since it's doing some magic behind the scenes, like parsing JSS files and applying styles and caching elements. If you have some legacy code, but would still want to test livetanium, you could probably overwrite the Ti.UI.create* functions with the K.create* equivalents - not the cleanest thing to do, but it shouldn't break anything since we're returning basic Ti.UI-elements, albeit augmented with new functions and run through our element factories. Did that make any sense?

Also, huge thanks :) Your encouragement is critical for us to keep the steam up!

Dec 14, 2010
Andreas Sandberg said...
Hey guys, will you be porting this to work with android sometime in the future?
Dec 15, 2010
Jacob Waller said...
@Andreas Yes, that's definitely on our list. We don't have an actual ETA yet, but now that Titanium Mobile 1.5 is out, it should be somewhat easier. We'll let you know when we start working on it!
Jan 05, 2011
opolyo01 said...
It is very useful tool indeed. Though, I am trying to understand why only changes in livetanium directory is getting applied. Don't you listen to the whole window object?
K.watch("127.0.0.1", 8128, win);

My goal is to be able update every view under the app.js parent window. So, in your example changing encodeImage/demo.js should also be reloaded, but it is not. It would also be nice to be able make changes to app.js on the fly as well. Is it possible?

Also, what is the use of function forceLoad(){Ti.UI.createActivityIndicator();....

Regards,
Oleg

Jan 13, 2011
Jacob Waller said...
Hi Oleg!

K.watch creates the actual link to the livetanium server, but every context that needs to be updated needs to register itself using the K.reg method with a suitable label. This is a bit messy, and not very straight-forward. We hope to make this much easier in an upcoming version.

Changing app.js on the fly is a bit trickier, since the app is very dependant on that context, but we'll see what we can come up with.

The forceLoad function is a workaround needed because if we pipe everything through our K.create* functions, Titanium's module-sniffing code won't see that we use these UIModules, and therefore not include them in the source, making our app explode in error messages.

All the best!
/Jacob 
Feb 07, 2011
ygbr said...
First of all, congratulations for this wonderful insight and tool ! Just awesome...
Didi you guys stopped development on this ? I've just forked it on GitHub but the project didn't get any code check-in since December...

Also, Is it working for iPad ? Did you guys predicted Titanium 1.6 ?

I'm really excited with this... Livetanium + Textmate really makes my day nicer !

Anyway, congratulations for this great software!

Feb 07, 2011
Jacob Waller said...
Hey!
Thanks for your encouragement!
The development hasn't stopped entirely, but it's been on hold for various reasons - mostly because we have too much going on. However, we have new plans and ideas, but need to find the time to realize them. Hope you can wait a few more weeks!

I don't think we have tested it on the iPad, but I cannot see why it wouldn't work.
We'll keep you posted.

Cheers!
/Jacob
Mar 17, 2011
criss said...
woooowwww now this is HUGE !!!! excellent job mates ;)
Mar 28, 2011
josh said...
what an incredibly useful tool...thanks
May 01, 2011
John said...
This is great, but would *love* a more detailed walkthrough regarding how to set it up. Pardon my ignorance, but where do I put K.watch in the demo?

Keep up the amazing work!

Jul 16, 2011
Joey said...
Just discovered livetanium! After some initial setup hiccups (mainly because I had never used nodejs before) I got it running! Great work guys!
Dec 28, 2011
Vinoth Babu said...
Is there any progress on Android part... we would love to see this working with Android phone or Tablet.

Leave a comment...