Tools used for Development with Titanium Appcelerator

At last weekends TiConf in Amsterdam Fokke Zandbergen gave a talk showcasing the use of specific community tools with Titanium.

In daily use developing with Appcelerator I depend on a number of commercial and community tools. Particularly around the iOS ecosystem and module development, you only get so far with Eclipse and XCode. Like many Appcelerator devs I do a most of my compilation and running from the terminal CLI – see Fokke’s talk above. And although I’m happy using the Aptana Titanium environment, a lot of developers aren’t, so if you’re disliking it, this post gives the low-down on how to set up your preferred editor.

Starting out?
If you are just starting out with Appcelerator (or any other language or environment) – you need to read, read, and read… I still try to set aside 1/2 hour each day to read the latest Q&A and blogs. This quickly informs you as to the common issues and solutions, and you learn the scope of built-in and community offerings. For Titanium, try these resources:

  • Developer Q&A
  • – the primary news and resource for Titanium community activity
  • – Search for modules and widgets, to get a feel for what is out there and to learn from reading others source code
  • The Appcelerator Blog will keep you in the loop on forthcoming changes and important issues within the SDK

Tools I use daily for Titanium and iOS module development (Mac OSX):

  • I use the sqlite manager plug-in within Firefox to be browse through my simulator’s local database, and Simpholders to quickly jump into the most recent simulator folder.
  • Likewise the free iPhone Configuration Utility allows the quick inspection and resolution of common issues with the state of your devices and their provisioning profiles.
  • DashDoc is a fantastic offline help system which saves me loads of time. Create a documentation set containing the Titanium, Underscore, Backbone & iOS libraries, and you have your searching and bookmarking all in one place instead of having to rummage through multiple web sites trying to find (or recall) what it is you need, without getting waylaid in the distraction land of the internet. It can also search stackoverflow and google for you from within the same window.
  • Another timesaver, Moom – (move and zoom) gives you keyboard shortcuts to reset your development/running environment windows to a preferred layout when you have a myriad of simulators, browser windows, terminals, and IDEs stacked all-over each other. Although I used to use multiple desktops extensively, Moom makes saving and restoring a meaningful layout a fraction-of-a-second.
  • TiShadow has to be the indispensible tool for any non-trivial Titanium cross-platform development. It allows you to tweak and inspect your UI and objects in near real time. I use the REPL interface and hooks styled like my.debug.testCurrentFeature() = if Ti.Shadow { doSomethingRepeatable; }. Altering doSomethingRepeatable and saving the file sends a patch update. Usually you’ll want to be installing it from source – if you depend on modules or do a lot of module development you need to compile your own copy of the TiShadow app which has your up-to-date modules in.
  • The Genymotion simulators might just save your sanity when developing for Android, and are a well-known favourite in the Appcelerator community. See this blog post for info on configuration.
  • This one is just a preference thing – I use the Eclipse extended presentation plug-in to save and restore the state of each project working environment rather than using Eclipse’ notion of workspaces. Mylyn is also great if you want to keep tasks and windows grouped by project within the IDE – but these days its somewhat overkill for me. Keep it simple…

Source control:
You should be familiar with git. If you are coming from a subversion, CVS, or teamfoundation background, a great intro to how DCVS differs was written by Joel Spoelsky back in 2010.

For personal or commercial work I use BitBucket which allows up to 5 developers to share a private repository. With work that is open-sourced, I still use BitBucket as the primary (private) repository, with a public repository on github as a second remote. This allows me to use BitBucket for working copy and backup quality code, and push changes to the open source github repo when they are ready to go.

On Windows I pretty much depend upon Examdiff for source code diffs; I use this daily for comparision of unt & regression testing results. I use Kaleidoscope on Mac OSX, but unfortunately its a distant second.

Design, project management, and sharing

  • Balsamiq is the industry standard for wireframe mockups
  • For project and task management I prefer Teambox/Redbooth over BaseCamp. This is primarily because you can create richer wiki-like notes containing images & links to your other documents, and because the google drive support is free, saving you from the “upload document -> download/edit -> upload new version” cycle of doom
  • Reflector is used for presentations, and sharing and recording iPhone screencasts
  • Installrapp is the easiest way to deliver your builds to testers

Empathy for sufferers of chronic pain

So sometime in the intervening period I was hit by a car and had several fractures in my foot. Ok great, so now I’d have a lot of time for reading, listening to podcasts, learning a new development environment, and training the EEG. Well, that was the idea. The reality was I spent most of my time feeling “washed out” from the painkillers, generally rubbish, and lacklustre. I have learned some Xamarin, done some EEG work, a lot of reading, and listened to many a podcast, but not much more than I would have done anyway.

Then seven weeks after the first accident when I was walking again, and the first time I was out on my bike cycling, I was clipped by a car and ended up on the road again! I was ok, unhurt, but, uhm, my overall experience of having several months of pain? Not much fun at all, I was pretty grumpy :-/

OpenEEG and Lucid Dreaming

6 Feb 2014

I have started using an OpenEEG headset to track my sleep patterns and prompt me … aware, but not awake, in REM phase, in order to acknowledge and start Lucid Dreaming.

It takes quite a bit of setup, which will be the topic of my initial posts; once I have established all the conditions… and had a little more sleep where I am less tangled in cables… :-)

In the meantime, read more at Lucid Scribe, Go Lucid, and OpenEEG.

Headband for OpenEEG

Halograph Headband for openEEG

Halograph Headband for Sleeping with the OpenEEG