SlideShare a Scribd company logo
EzSMS
A simple SMS gateway for Android
            in Ruby



                            Chandan Jog
                     Habibullah Pagarkar
                         Anand Agrawal
Chandan Jog
    @jog_chandan
cjog@thoughtworks.com
Habibullah Pagarkar
       @mhabibp
 hulk@thoughtworks.com
Intended Take-Aways
                Why SMS?

Your options for building an SMS based app

      Quick introduction to Android

        A taste of Ruby on Android
SMS is omnipresent

Logical choice and not a “hot new”
            technology

Caters to the technically un-savvy
SMS is powerful



MOTECH and mHealth
     Suite of services
   Basic mobile phones
Antenatal and neonatal care
SMS is useful
In the cloud
Or, deal with them
DIY
http://socialwebdaily.com/wp-content/uploads/2011/12/grandma_meme_large1.jpg
Can your grandma get it up?
We <3
We <3
http://walyou.com/android-exploded-shirt/
Anatomy of an Android app
Linux, but not quite


   Linux kernel + Dalvik VM

No X. No GNU libraries. No JVM.
Activities


Visual components
Activities


An application consists of multiple
    loosely coupled Activities
Activities


An Activity is notified of change in state
          through application
           life-cycle callbacks
Views and Layouts


  Views and Widgets

       Layout
publ i c class Exam eAc t i vi t y extends Act i vi t y {
               s       pl                s
        @Override  e
        publ i c void onCreate(Bundl e savedInstanceState) {
                     d                                    )
                s uper .onCreate(savedInstanceState);   ;
        }

      @Override  e
      pr ot ect ed void onStart() {
                 d     d         )
              s uper .onStart();
                               ;
      }

      @Override  e
      pr ot ect ed void onResume() {
                 d     d          )
              s uper .onResume();
                                ;
      }

      @Override  e
      pr ot ect ed void onPause() {
                 d     d         )
              s uper .onPause();
                               ;
      }

      @Override  e
      pr ot ect ed void onStop() {
                 d     d        )
              s uper .onStop();
                              ;
      }

      @Override  e
      pr ot ect ed void onDestroy() {
                 d     d
              s uper .onDestroy();
                                 ;
                                   )                           Activity
      }
}
Intent


Roughly analogous to a message
Intent

    Use Intents to communicate

within components of an application

      or between applications
Intent

I nt ent intent = new Intent(I nt ent .ACTION_SEND);
       t      t     w                              ;

intent.putExtra(I nt ent .EXTRA_EMAIL, recipientArray);
                                     ,                ;

startActivity(intent);
                     ;
Intent Filters

              Explicit Intents
Designate a target component by its name

            Implicit Intents
          Do not name a target
Manifest

      AndroidManifest.xml

 Declaratively specify application
components, services, permissions,
 minimum Android API version etc.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.android.notepad">
      <application android:icon="@drawable/app_notes"
                    android:label="@string/app_name" >
           <provider android:name="NotePadProvider"
                      android:authorities="com.google.provider.NotePad" />
           <activity android:name="NotesList"
                      android:label="@string/title_notes_list">
                    <intent-filter>
                           <action android:name="android.intent.action.MAIN" />
                           <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
                    <intent-filter>
                           <action android:name="android.intent.action.VIEW" />
                           <action android:name="android.intent.action.EDIT" />
                           <action android:name="android.intent.action.PICK" />
                           <category android:name="android.intent.category.DEFAULT" />
                           <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
                    </intent-filter>
                    <intent-filter>
                           <action android:name="android.intent.action.GET_CONTENT" />
                           <category android:name="android.intent.category.DEFAULT" />
                           <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
                    </intent-filter>
             </activity>
     </application>
</manifest>
Service

BroadcastReceiver

ContentProvider

       …
Open

DBAdapter.java
http://awesomebmovies.com/2011/04/bill-and-teds-back-in-action/
It’s like, too much code, dude!
              Whoa!
options_from_collection_for_select
Konnichiwa, Ruboto-san

Aims to make JRuby a first class Android
                citizen

        Lends to easy scripting

    Maps underlying Android layer
Flavour 1

             ruboto-irb

Interactive environment on the phone
Flavour 2

         ruboto-core

Packages Ruby scripts as an APK
Pre-reqs

   JRuby

Android SDK

  Ruboto
Application Generator
$ ruboto gen app
--package com.yourdomain.whatever
--path path/to/app
--name AppName
--target android-version
--min-sdk another-android-version
--activity MainActivityName
Class Generator


$ ruboto gen class
BroadcastReceiver --name
AwesomenessReceiver
Packaging Tasks
$ rake install

$ rake update_scripts

$ rake install:clean

And many more with rake -T
Poll Box


A simple feedback gathering application



          http://Poll-Box.com
http://www.caribdirect.com/2012/01/31/hows-my-driving-too-fast-too-bad/
How are we doing?
SMS 08800493714

    code Y/N comment

ezsms Y The talk is awesome!
poll-box.com/response/102/ezsms
http://en.wikipedia.org/wiki/Linus_Torvalds
Talk is cheap




                       the code
                We’ll show you
Fork it



github.com/chandanjog/ez_sms
Good news everyone!




                                       http://hollywoodhatesme.files.wordpress.com/2011/09/prof-farnsworth.jpg
 Use your existing Ruby knowledge

                      Type less ;)

               Best of both worlds
                        Android APIs
                          RubyGems
Bad News
JRuby isn’t designed for constrained devices

  Stack space limitations on the Dalvik VM

 Ruboto doesn’t completely abstract away
         Android’s complexities

         Slow JRuby start-up time
Ruby conf2012
Ruby conf2012
Ruby conf2012
Ruby conf2012

More Related Content

Viewers also liked

Javascript patterns
Javascript patternsJavascript patterns
Javascript patternsChandan Jog
 
Hp secap android
Hp secap androidHp secap android
Hp secap androidrajeshckr
 
DevFest Nordeste - 2014 - Ruboto - Breno Moura
DevFest Nordeste - 2014 - Ruboto - Breno MouraDevFest Nordeste - 2014 - Ruboto - Breno Moura
DevFest Nordeste - 2014 - Ruboto - Breno MouraBreno Moura
 
PPT on Android Applications
PPT on Android ApplicationsPPT on Android Applications
PPT on Android ApplicationsAshish Agarwal
 
SMS Setup in Practo
SMS Setup in PractoSMS Setup in Practo
SMS Setup in Practopracto
 
My presentation on Android in my college
My presentation on Android in my collegeMy presentation on Android in my college
My presentation on Android in my collegeSneha Lata
 

Viewers also liked (7)

Javascript patterns
Javascript patternsJavascript patterns
Javascript patterns
 
Hp secap android
Hp secap androidHp secap android
Hp secap android
 
DevFest Nordeste - 2014 - Ruboto - Breno Moura
DevFest Nordeste - 2014 - Ruboto - Breno MouraDevFest Nordeste - 2014 - Ruboto - Breno Moura
DevFest Nordeste - 2014 - Ruboto - Breno Moura
 
Ruboto
RubotoRuboto
Ruboto
 
PPT on Android Applications
PPT on Android ApplicationsPPT on Android Applications
PPT on Android Applications
 
SMS Setup in Practo
SMS Setup in PractoSMS Setup in Practo
SMS Setup in Practo
 
My presentation on Android in my college
My presentation on Android in my collegeMy presentation on Android in my college
My presentation on Android in my college
 

Similar to Ruby conf2012

Android training in mumbai
Android training in mumbaiAndroid training in mumbai
Android training in mumbaiCIBIL
 
android level 3
android level 3android level 3
android level 3DevMix
 
Native Android Development Practices
Native Android Development PracticesNative Android Development Practices
Native Android Development PracticesRoy Clarkson
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahNick Plante
 
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016Loïc Knuchel
 
rssfeeds.classpathrssfeeds.project rssfeed .docx
rssfeeds.classpathrssfeeds.project  rssfeed  .docxrssfeeds.classpathrssfeeds.project  rssfeed  .docx
rssfeeds.classpathrssfeeds.project rssfeed .docxjoellemurphey
 
Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best PracticesYekmer Simsek
 
Android activity, service, and broadcast recievers
Android activity, service, and broadcast recieversAndroid activity, service, and broadcast recievers
Android activity, service, and broadcast recieversUtkarsh Mankad
 
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...Ted Chien
 
From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)Jose Manuel Pereira Garcia
 
React Native +Redux + ES6 (Updated)
React Native +Redux + ES6 (Updated)React Native +Redux + ES6 (Updated)
React Native +Redux + ES6 (Updated)Chiew Carol
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)Bramus Van Damme
 
Optimizing Apps for Better Performance
Optimizing Apps for Better PerformanceOptimizing Apps for Better Performance
Optimizing Apps for Better PerformanceElif Boncuk
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code lessAnton Novikau
 
Android tutorial (2)
Android tutorial (2)Android tutorial (2)
Android tutorial (2)Kumar
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basicsAnton Narusberg
 

Similar to Ruby conf2012 (20)

Android training in mumbai
Android training in mumbaiAndroid training in mumbai
Android training in mumbai
 
android level 3
android level 3android level 3
android level 3
 
Native Android Development Practices
Native Android Development PracticesNative Android Development Practices
Native Android Development Practices
 
Android - Anatomy of android elements & layouts
Android - Anatomy of android elements & layoutsAndroid - Anatomy of android elements & layouts
Android - Anatomy of android elements & layouts
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
 
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
 
rssfeeds.classpathrssfeeds.project rssfeed .docx
rssfeeds.classpathrssfeeds.project  rssfeed  .docxrssfeeds.classpathrssfeeds.project  rssfeed  .docx
rssfeeds.classpathrssfeeds.project rssfeed .docx
 
Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best Practices
 
Android activity, service, and broadcast recievers
Android activity, service, and broadcast recieversAndroid activity, service, and broadcast recievers
Android activity, service, and broadcast recievers
 
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
 
From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)
 
Android dev
Android devAndroid dev
Android dev
 
How to Make Android Native Application
How to Make Android Native ApplicationHow to Make Android Native Application
How to Make Android Native Application
 
Android Intro
Android IntroAndroid Intro
Android Intro
 
React Native +Redux + ES6 (Updated)
React Native +Redux + ES6 (Updated)React Native +Redux + ES6 (Updated)
React Native +Redux + ES6 (Updated)
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)
 
Optimizing Apps for Better Performance
Optimizing Apps for Better PerformanceOptimizing Apps for Better Performance
Optimizing Apps for Better Performance
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code less
 
Android tutorial (2)
Android tutorial (2)Android tutorial (2)
Android tutorial (2)
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basics
 

Recently uploaded

Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Thierry Lestable
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀DianaGray10
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxAbida Shariff
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backElena Simperl
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupCatarinaPereira64715
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 

Recently uploaded (20)

Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 

Ruby conf2012