Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Titanium Appcelerator and Composrapp.com

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Titanium Appcelerator and Composrapp.com

Nick is Lead Developer at GiMiScale and Trucker.io. Passionate about Cloud Computing and (backend) development using Ruby on Rails, but also for making and recording music.

About two years ago the idea of Composrapp.com came up. In this talk Nick will explain why he chose Titanium and some challenges he faced when building his app.

Avatar for Nick den Engelsman

Nick den Engelsman

October 01, 2014

Other Decks in Technology

Transcript

  1. composrapp.com - @composrapp Nick den Engelsman Lead Developer at @GiMiScale

    and @truckerio. Passionate about Cloud Computing and backend development using Ruby on Rails. Background Github: nicka Twitter: @nickengelsman
  2. composrapp.com - @composrapp Why Composr? • Working and collaborating on

    a song can be hard • Can't always attend band sessions / jams • Recording and sharing new song ideas over the internet can also be quite cumbersome
  3. composrapp.com - @composrapp Why Titanium? • Used Titanium back in

    it's HTML days
 • No Objective-C experience • Already experienced with writing JavaScript
  4. composrapp.com - @composrapp BandMate(Composr) 2012 Why didn't i finish? •

    Time • Started without a plan / designs • Missing MVC principles • No TiShadow
  5. composrapp.com - @composrapp Composr 2014 What changed? • Working four

    days a week • Started with a plan / designs • Alloy MVC (w0000t) • TiShadow
  6. composrapp.com - @composrapp Issues during development Running TiShadow with com.pusher

    module duplicate symbol _OBJC_METACLASS_$_SRIOConsumer in: [TRACE] /Users/.../App/build/appify/modules/iphone/ net.iamyellow.tiws/0.3/libnet.iamyellow.tiws.a(SRWebSocket.o) [TRACE] /Users/.../App/build/appify/modules/iphone/ com.pusher/1.8/libcom.pusher.a(SRWebSocket.o) [TRACE] ld: 46 duplicate symbols for architecture i386 [TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ERROR] ** BUILD FAILED ** [ERROR] The following build commands failed: [ERROR] Ld build/Debug-iphonesimulator/App.app/App normal i386 [ERROR] (1 failure)
  7. composrapp.com - @composrapp Issues during development How did i fix

    this? Gruntjs and grunt-comment-toggler $.songDetail.addEventListener('open', function(e) { //<!-- comments:toggle // --> // Pusher.connect(); // <!-- endcomments --> }); $.songDetail.addEventListener('open', function(e) { <!-- comments:toggle // --> Pusher.connect(); <!-- endcomments --> });
  8. composrapp.com - @composrapp Issues during development Storing Emoji's in the

    backend(API) • Turn on Emoji keyboard in simulator • Let backend convert unicode into :+1: string If you happen to use Ruby on Rails for your backend: gem 'rumoji' # Convert unicode into string gem 'gemoji' # Emoji images and names
  9. composrapp.com - @composrapp Issues during development Caching backend(API) data •

    No activity feed data on boot • Lot of the same requests • Allot of requests to the backend(API) Added caching layer with: guilhermechapiewski/titanium-cache from Github.
  10. composrapp.com - @composrapp Issues during development Song-Editor performance • Performance

    • Lots of calculations • Lots of UI Views
 • Audio latency • Ti.Media.Sound
  11. composrapp.com - @composrapp Issues during development Song-Editor performance setInterval function

    has a low precision timer and, even worst, accumulates timing errors on each iteration, which results in a total lost of synchronization on any timing operation in just a few seconds. Perform accurate timeout and interval operations with a precision higher than 2 ms. and NO accumulative errors.
  12. composrapp.com - @composrapp Finishing Up Current state: Awaiting AppStore approval

    composrapp.com is FREE Website is already open for registrations Please share Questions?