SlideShare a Scribd company logo
1 of 38
Download to read offline
TICONF.US,NEWYORK,10/05/2014
Debugging and Profiling
Titanium Apps
TICONF.US,NEWYORK,10/05/2014 2
Olivier Morandi
Software engineer
!
http://titaniumninja.com!
olivier.morandi@gmail.com
@olivier_morandi
https://github.com/omorandi
TICONF.US,NEWYORK,10/05/2014 3
Where I’m from
TICONF.US,NEWYORK,10/05/2014
• Ti app development
• Native module development (iOS/Android)
• Optimisations
• R&D
4
TICONF.US,NEWYORK,10/05/2014
• Available tools
• Tools I wish would exist
• Experiments & hacks
5
This talk
TICONF.US,NEWYORK,10/05/2014
• console.log() aka Ti.API.info()
• Ti Studio Debugger
6
Titanium JS Debugging Tools
TICONF.US,NEWYORK,10/05/2014
• If abused, logging statements add too much
clutter to your code + they’re not
inexpensive
• I want to be able to debug both JS and
native code (iOS modules) at the same time
• Ti debugger doesn’t fit in a CLI-based
workflow
7
Problems
TICONF.US,NEWYORK,10/05/2014
Ti Inspector
https://github.com/omorandi/TiInspector
8
TICONF.US,NEWYORK,10/05/2014 9
Titanium debugger (iOS)
Ti JSCore
Debugger
Agent
Custom TCP protocol
http://docs.appcelerator.com/titanium/latest/#!/guide/Debugger_Protocol
1176979825728*breakpoint*create*app://app.js*116*1*0**1
1176979825728*created
TiStudio
TICONF.US,NEWYORK,10/05/2014 10
Chrome Remote Debugging
Chrome Devtools Inspected Page
JSON-RPC protocol over Websockets
{"method":"Debugger.setBreakpointByUrl","params":
{"lineNumber":32,"url":"todo-view.js","columnNumber":
0,"condition":""},"id":157}
{"result":{"breakpointId":"odo-view.js:32:0","locations":
[{"scriptId":"96","lineNumber":32,"columnNumber":7}]},"id":157}
https://developers.google.com/chrome-developer-tools/docs/debugger-protocol?hl=it
TICONF.US,NEWYORK,10/05/2014 11
Ti Inspector
Chrome Devtools
Ti Inspector
Ti debugger protocolWeb Inspector protocol
Ti JSCore
Debugger
Agent
TICONF.US,NEWYORK,10/05/2014
$ [sudo] npm install -g ti-inspector
12
Ti Inspector - Install
TICONF.US,NEWYORK,10/05/2014
$ cd path/to/your/ti/project!
$ ti-inspector !
$ open http://localhost:8080!
$ titanium build -p ios —debug-host localhost:8999
13
Ti Inspector - Run
TICONF.US,NEWYORK,10/05/2014
• Breakpoints
• Variable & object inspection
• Watches
14
Debugging
TICONF.US,NEWYORK,10/05/2014
• Console & REPL
• Stepping
• Conditional breakpoints
15
Debugging
TICONF.US,NEWYORK,10/05/2014
Ti Inspector demo
16
TICONF.US,NEWYORK,10/05/2014
• iOS only
• On device debugging
• Possible running the project through Xcode
• There’ll be a module for that ;-)
• Alloy source maps
• No support for multiple JS threads
• e.g. Ti.UI.Window created via url property
• Expression eval not supported if not suspended
17
What’s missing
TICONF.US,NEWYORK,10/05/2014
Node Inspector
https://github.com/node-inspector/node-inspector
18
TICONF.US,NEWYORK,10/05/2014
• Originally implemented by Danny Coates,
it’s a gateway between Chrome Devtools
and the V8 debugging agent
• Strongloop recently took over the project
and started improving on it
• It works for debugging Ti Apps on Android
19
Node Inspector
TICONF.US,NEWYORK,10/05/2014 20
Node Inspector
Chrome Devtools
Node Inspector
V8 debugger protocolWeb Inspector protocol
V8
Debugger
Agent
TICONF.US,NEWYORK,10/05/2014
$ [sudo] npm install -g node-inspector
21
Node Inspector - Install
TICONF.US,NEWYORK,10/05/2014
$ node-inspector !
$ titanium build -p android —debug-host localhost:5858!
$ open http://127.0.0.1:8080/debug?port=5858
22
Node Inspector - Run
TICONF.US,NEWYORK,10/05/2014
• No console logging (only evaluation)
23
Limitations
TICONF.US,NEWYORK,10/05/2014
Node Inspector demo
24
TICONF.US,NEWYORK,10/05/2014
What about other Chrome Devtools features?
25
TICONF.US,NEWYORK,10/05/2014
• Profiles
★ cpu
★ heap
• Timeline
• Network
• Page layout
26
Devtools
TICONF.US,NEWYORK,10/05/2014
More opportunities to inspect the internal state
and the behaviour of our app
27
TICONF.US,NEWYORK,10/05/2014
TiScope
(Very early work in progress)
28
TICONF.US,NEWYORK,10/05/2014
• Ti Inspector 2.0
★ Instrument Titanium
• events
• network requests
• other sources of interesting behaviour
★ Expose JS engine information
• Execution profiles
• Memory behaviour
★ Analysis through Chrome devtools
29
TiScope
TICONF.US,NEWYORK,10/05/2014
• Android only
• At the moment: custom Ti SDK build
★ Some instrumentation hooks added to Ti
proxy implementation
★ Instrumenting agents living in self
contained Java + native library
30
How it works (now)
TICONF.US,NEWYORK,10/05/2014
TiScope demo
(Android)
31
TICONF.US,NEWYORK,10/05/2014
JS Function Tracing
(Very early work in progress)
32
TICONF.US,NEWYORK,10/05/2014 33
Tracing function calls on iOS
TICONF.US,NEWYORK,10/05/2014
• Tiny modification in Ti-JSCore source code
+
• Native iOS module
!
• Produce a trace file
• Import into Chrome’s about:tracing page
34
JSCore tracing
TICONF.US,NEWYORK,10/05/2014
Tracing demo
35
TICONF.US,NEWYORK,10/05/2014
• Add more instrumenting agents
• Implement the same on iOS
• Stabilise the code
• Integrate everything together in a self
contained tool
★ possibly a CLI build hook
36
Future plans
TICONF.US,NEWYORK,10/05/2014
• twitter: @olivier_morandi
• email: olivier.morandi@gmail.com
37
Feedback needed
TICONF.US,NEWYORK,10/05/2014
Q&A
!
Thank you!

More Related Content

Similar to TiConf US 2014

Android Services Skill Sprint
Android Services Skill SprintAndroid Services Skill Sprint
Android Services Skill SprintJim McKeeth
 
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...Amir Zmora
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium IntroNicholas Jansma
 
Advanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive WebAdvanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive WebPerfecto by Perforce
 
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Adam Paxton
 
Mastering Mobile Test Automation with Appium
Mastering Mobile Test Automation with AppiumMastering Mobile Test Automation with Appium
Mastering Mobile Test Automation with AppiumPerfecto by Perforce
 
What is (not) Pharo 8?
What is (not) Pharo 8?What is (not) Pharo 8?
What is (not) Pharo 8?FAST
 
OPNFV Developer Tools and Release Process
OPNFV Developer Tools and Release ProcessOPNFV Developer Tools and Release Process
OPNFV Developer Tools and Release ProcessOPNFV
 
CloudFoundry-summit-2015-a-look-back
CloudFoundry-summit-2015-a-look-backCloudFoundry-summit-2015-a-look-back
CloudFoundry-summit-2015-a-look-backKrishna-Kumar
 
Engineering Tools at Netflix: Enabling Continuous Delivery
Engineering Tools at Netflix: Enabling Continuous DeliveryEngineering Tools at Netflix: Enabling Continuous Delivery
Engineering Tools at Netflix: Enabling Continuous DeliveryMike McGarr
 
Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.UA Mobile
 
Titanium - The Good Parts (TiConf Bangalore)
Titanium - The Good Parts (TiConf Bangalore)Titanium - The Good Parts (TiConf Bangalore)
Titanium - The Good Parts (TiConf Bangalore)Gaurav Kheterpal
 
Two Scope of Django 1.6 Chapter 20 and 21
Two Scope of Django 1.6  Chapter 20 and 21Two Scope of Django 1.6  Chapter 20 and 21
Two Scope of Django 1.6 Chapter 20 and 21Gu-yuan Lin
 
Building a Scalable CI Platform using Docker, Drone and Rancher
Building a Scalable CI  Platform using Docker, Drone and RancherBuilding a Scalable CI  Platform using Docker, Drone and Rancher
Building a Scalable CI Platform using Docker, Drone and RancherShannon Williams
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projectsAppsDojo
 
Practical Guide for Optimizing Unity on Mobiles
Practical Guide for Optimizing Unity on MobilesPractical Guide for Optimizing Unity on Mobiles
Practical Guide for Optimizing Unity on MobilesValentin Simonov
 
Optimizing Test Coverage throughout the DevOps Pipeline
Optimizing Test Coverage throughout the DevOps PipelineOptimizing Test Coverage throughout the DevOps Pipeline
Optimizing Test Coverage throughout the DevOps PipelinePerfecto Mobile
 
GTAC 2015
GTAC 2015GTAC 2015
GTAC 2015Dino Su
 
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03msohn
 

Similar to TiConf US 2014 (20)

Android Services Skill Sprint
Android Services Skill SprintAndroid Services Skill Sprint
Android Services Skill Sprint
 
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium Intro
 
Advanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive WebAdvanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive Web
 
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
 
Mastering Mobile Test Automation with Appium
Mastering Mobile Test Automation with AppiumMastering Mobile Test Automation with Appium
Mastering Mobile Test Automation with Appium
 
What is (not) Pharo 8?
What is (not) Pharo 8?What is (not) Pharo 8?
What is (not) Pharo 8?
 
OPNFV Developer Tools and Release Process
OPNFV Developer Tools and Release ProcessOPNFV Developer Tools and Release Process
OPNFV Developer Tools and Release Process
 
CloudFoundry-summit-2015-a-look-back
CloudFoundry-summit-2015-a-look-backCloudFoundry-summit-2015-a-look-back
CloudFoundry-summit-2015-a-look-back
 
Engineering Tools at Netflix: Enabling Continuous Delivery
Engineering Tools at Netflix: Enabling Continuous DeliveryEngineering Tools at Netflix: Enabling Continuous Delivery
Engineering Tools at Netflix: Enabling Continuous Delivery
 
Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.
 
Titanium - The Good Parts (TiConf Bangalore)
Titanium - The Good Parts (TiConf Bangalore)Titanium - The Good Parts (TiConf Bangalore)
Titanium - The Good Parts (TiConf Bangalore)
 
Two Scope of Django 1.6 Chapter 20 and 21
Two Scope of Django 1.6  Chapter 20 and 21Two Scope of Django 1.6  Chapter 20 and 21
Two Scope of Django 1.6 Chapter 20 and 21
 
Building a Scalable CI Platform using Docker, Drone and Rancher
Building a Scalable CI  Platform using Docker, Drone and RancherBuilding a Scalable CI  Platform using Docker, Drone and Rancher
Building a Scalable CI Platform using Docker, Drone and Rancher
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
 
Practical Guide for Optimizing Unity on Mobiles
Practical Guide for Optimizing Unity on MobilesPractical Guide for Optimizing Unity on Mobiles
Practical Guide for Optimizing Unity on Mobiles
 
Optimizing Test Coverage throughout the DevOps Pipeline
Optimizing Test Coverage throughout the DevOps PipelineOptimizing Test Coverage throughout the DevOps Pipeline
Optimizing Test Coverage throughout the DevOps Pipeline
 
GTAC 2015
GTAC 2015GTAC 2015
GTAC 2015
 
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
Using Git in Eclipse - Eclipse Summit Europe 2010-11-03
 
Driving development in PHP
Driving development in PHPDriving development in PHP
Driving development in PHP
 

Recently uploaded

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 

Recently uploaded (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 

TiConf US 2014