SlideShare a Scribd company logo
Evernote and Android
                                       Ty Smith
                                 Sr. Android Engineer
                                    @tylersmithnet



Wednesday, February 27, 13
Scaling Android development




Wednesday, February 27, 13
Why Android?




Wednesday, February 27, 13
Daily Usage by Client




Wednesday, February 27, 13
Best app




Wednesday, February 27, 13
Best app




Wednesday, February 27, 13
API Versions




Wednesday, February 27, 13
API versions...




Wednesday, February 27, 13
API versions...

                • Android Compatibility Library




Wednesday, February 27, 13
API versions...

                • Android Compatibility Library
                • Reflection/API check




Wednesday, February 27, 13
API versions...

                • Android Compatibility Library
                • Reflection/API check
                • Emulators




Wednesday, February 27, 13
API versions...

                • Android Compatibility Library
                • Reflection/API check
                • Emulators
                • Third Party Libraries




Wednesday, February 27, 13
API versions...

                • Android Compatibility Library
                • Reflection/API check
                • Emulators
                • Third Party Libraries
                    • Actionbar Sherlock, Holo Everywhere, Otto,
                             and Dagger




Wednesday, February 27, 13
Device Sizes




Wednesday, February 27, 13
Device Sizes




Wednesday, February 27, 13
Device Sizes




Wednesday, February 27, 13
Device Sizes




Wednesday, February 27, 13
Device Sizes




              • Scrollview & Linear Layouts




Wednesday, February 27, 13
Device Sizes

     • Fragments




Wednesday, February 27, 13
Reusable Components




Wednesday, February 27, 13
Reusable Components

                • Notifications




Wednesday, February 27, 13
Reusable Components

                • Notifications
                • Camera




Wednesday, February 27, 13
Reusable Components

                • Notifications
                • Camera
                • Custom Views




Wednesday, February 27, 13
Reusable Components

                • Notifications
                • Camera
                • Custom Views
                • SDK




Wednesday, February 27, 13
Reusable Components

                • Notifications
                • Camera
                • Custom Views
                • SDK
                • Content Providers




Wednesday, February 27, 13
Reusable Components

                • Notifications
                • Camera
                • Custom Views
                • SDK
                • Content Providers
                • Intents




Wednesday, February 27, 13
Reusable Components

                • Notifications
                • Camera
                • Custom Views
                • SDK
                • Content Providers
                • Intents
                • Release Profiles



Wednesday, February 27, 13
Build System Difficulties




Wednesday, February 27, 13
Build System Difficulties




         •       Multiple branches of development




Wednesday, February 27, 13
Build System Difficulties




         •       Multiple branches of development
         •       Dependencies on other teams' libraries




Wednesday, February 27, 13
Build System Difficulties




         •       Multiple branches of development
         •       Dependencies on other teams' libraries
         •       Many distribution channels                                                  




Wednesday, February 27, 13
Goal




Wednesday, February 27, 13
Goal




         •       Security




Wednesday, February 27, 13
Goal




         •       Security
         •       Build History




Wednesday, February 27, 13
Goal




         •       Security
         •       Build History
         •       Easy Distribution




Wednesday, February 27, 13
Build Process




                                         Profiles

                                                      Dependencies
                                                       .properties


                                  .APK


                             QA              Market
Wednesday, February 27, 13
Support Benefits




Wednesday, February 27, 13
The Evernote Platform & Android SDK




Wednesday, February 27, 13
The Evernote Platform




Wednesday, February 27, 13
The Evernote Platform



         •      The platform ties together all of our products - and it’s
                available to everybody.




Wednesday, February 27, 13
The Evernote Platform



         •      The platform ties together all of our products - and it’s
                available to everybody.
         •      We build great apps that help you capture and recall
                important information.




Wednesday, February 27, 13
The Evernote Platform



         •      The platform ties together all of our products - and it’s
                available to everybody.
         •      We build great apps that help you capture and recall
                important information.
         •      Third party developers add new and different ways to
                capture and recall information, and put your Evernote
                data in context with all of the other services you use.




Wednesday, February 27, 13
What’s in that cloud?




Wednesday, February 27, 13
What’s in that cloud?




         •      Six billion HTTP requests last month.




Wednesday, February 27, 13
What’s in that cloud?




         •      Six billion HTTP requests last month.
         •      20 thousand third party developers




Wednesday, February 27, 13
What’s in that cloud?




         •      Six billion HTTP requests last month.
         •      20 thousand third party developers
         •      1.5 billion notes have been created to date




Wednesday, February 27, 13
What’s in that cloud?




         •      Six billion HTTP requests last month.
         •      20 thousand third party developers
         •      1.5 billion notes have been created to date
         •      380TB of user data




Wednesday, February 27, 13
What’s in that cloud?




         •      Six billion HTTP requests last month.
         •      20 thousand third party developers
         •      1.5 billion notes have been created to date
         •      380TB of user data
         •      40 million registered users




Wednesday, February 27, 13
Evernote’s Apps




Wednesday, February 27, 13
The Evernote Ecosystem




Wednesday, February 27, 13
Remember Everything




Wednesday, February 27, 13
Remember Everything




         •      All of your notes live together in context. Search for a
                meal, and you’ll find related meetings, web clips, and
                more.




Wednesday, February 27, 13
Remember Everything




         •      All of your notes live together in context. Search for a
                meal, and you’ll find related meetings, web clips, and
                more.
         •      Every app that adds content to your Evernote account
                makes every other app smarter.




Wednesday, February 27, 13
The Platform Team




Wednesday, February 27, 13
The Platform Team




         •      Develop APIs, SDKs, sample code and docs




Wednesday, February 27, 13
The Platform Team




         •      Develop APIs, SDKs, sample code and docs
         •      Educate developer communities about the Evernote
                Platform




Wednesday, February 27, 13
The Platform Team




         •      Develop APIs, SDKs, sample code and docs
         •      Educate developer communities about the Evernote
                Platform
         •      Support developers




Wednesday, February 27, 13
The Platform Team




         •      Develop APIs, SDKs, sample code and docs
         •      Educate developer communities about the Evernote
                Platform
         •      Support developers
         •      Promote great apps to our user base




Wednesday, February 27, 13
Hackathons




Wednesday, February 27, 13
Android SDK




Wednesday, February 27, 13
Android SDK



     •      Open Source and an open roadmap
            https://github.com/evernote/evernote-sdk-android




Wednesday, February 27, 13
Android SDK



     •      Open Source and an open roadmap
            https://github.com/evernote/evernote-sdk-android
     •      Library Project for easy integration




Wednesday, February 27, 13
Android SDK



     •      Open Source and an open roadmap
            https://github.com/evernote/evernote-sdk-android
     •      Library Project for easy integration
     •      Maven Central for dependency management




Wednesday, February 27, 13
Android SDK



     •      Open Source and an open roadmap
            https://github.com/evernote/evernote-sdk-android
     •      Library Project for easy integration
     •      Maven Central for dependency management
     •      OAuth2 for secure authentication




Wednesday, February 27, 13
Android SDK



     •      Open Source and an open roadmap
            https://github.com/evernote/evernote-sdk-android
     •      Library Project for easy integration
     •      Maven Central for dependency management
     •      OAuth2 for secure authentication
     •      Thrift for server-client communication




Wednesday, February 27, 13
Android SDK: Authentication

     private     static final String CONSUMER_KEY = "Your consumer key";
     private     static final String CONSUMER_SECRET = "Your consumer secret";
     private     static final String EVERNOTE_HOST = EvernoteSession.HOST_SANDBOX;
     private     EvernoteSession mEvernoteSession;

     @Override
     public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       mEvernoteSession = EvernoteSession.init(this,
                                               CONSUMER_KEY,
                                               CONSUMER_SECRET,
                                               EVERNOTE_HOST,
                                               null);

       if (!mEvernoteSession.isLoggedIn())
         mEvernoteSession.authenticate(this);
     }

     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
       super.onActivityResult(requestCode, resultCode, data);
       if(requestCode == EvernoteSession.REQUEST_CODE_OAUTH &&
           resultCode == Activity.RESULT_OK)
         //Success, Update UI when OAuth activity returns result
     }




Wednesday, February 27, 13
Android SDK: Creating a note




     /**
      * This is a network request, call outside of main thread
      */
     public void createNote(String title, String content) {
       Note note = new Note();
       note.setTitle(title);

       String enmlContent = EvernoteUtil.NOTE_PREFIX +
                       content +
                       EvernoteUtil.NOTE_SUFFIX;

         note.setContent(enmlContent);
         note = mEvernoteSession.createNoteStore().createNote(mEvernoteSession.getAuthToken(), note);
     }




Wednesday, February 27, 13
Intent: Creating a note



     public static final String ACTION_NEW_NOTE = "com.evernote.action.CREATE_NEW_NOTE";

     public void newNoteWithContent(View view) {
       String text = "This is a sample text file.nThis is line two.";
       String title = "New Note with Content";
       
       Intent intent = new Intent();
       intent.setAction(ACTION_NEW_NOTE);
       
        // Set the note's title and plaintext content
       intent.putExtra(Intent.EXTRA_TITLE, title);
       intent.putExtra(Intent.EXTRA_TEXT, text);

       startActivity(intent);
     }




Wednesday, February 27, 13
Intent: Viewing a note




     public static final String ACTION_VIEW_NOTE = "com.evernote.action.VIEW_NOTE";

     public void viewNote(View view) {
       String noteGuid = "63781605-3c3d-4e56-90a8-8be5e3ae7eee";
       boolean hideTitleBar = true;
       
       Intent intent = new Intent();
       intent.setAction(ACTION_VIEW_NOTE);
       intent.putExtra(EXTRA_NOTE_GUID, noteGuid);
       intent.putExtra(EXTRA_FULL_SCREEN, hideTitleBar);
       
        startActivity(intent);
     }




Wednesday, February 27, 13
Hiring an Android Engineer




Wednesday, February 27, 13
Personality Requirements




Wednesday, February 27, 13
Personality Requirements




         •      Great Communication




Wednesday, February 27, 13
Personality Requirements




         •      Great Communication
         •      Strong Passion




Wednesday, February 27, 13
Personality Requirements




         •      Great Communication
         •      Strong Passion
         •      Problem Solver




Wednesday, February 27, 13
Technical Requirements




Wednesday, February 27, 13
Technical Requirements




         •      Object Oriented Design




Wednesday, February 27, 13
Technical Requirements




         •      Object Oriented Design
         •      Algorithms




Wednesday, February 27, 13
Technical Requirements




         •      Object Oriented Design
         •      Algorithms
         •      Data Structures




Wednesday, February 27, 13
Technical Requirements




         •      Object Oriented Design
         •      Algorithms
         •      Data Structures
         •      Multithreaded Systems




Wednesday, February 27, 13
The Interview




Wednesday, February 27, 13
The Interview




         •      Coding Challenge




Wednesday, February 27, 13
The Interview




         •      Coding Challenge
         •      Phone Screen




Wednesday, February 27, 13
The Interview




         •      Coding Challenge
         •      Phone Screen
         •      1 on 1 Interview




Wednesday, February 27, 13
The Interview




         •      Coding Challenge
         •      Phone Screen
         •      1 on 1 Interview
         •      Multiple Engineers




Wednesday, February 27, 13
Questions?

                             http://dev.evernote.com




                                                                  Ty Smith
                                             Sr. Android Engineer, Evernote
                                                     tsmith@evernote.com
                                                            @tylersmithnet

Wednesday, February 27, 13

More Related Content

Similar to Stanford session

PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or Less
Troy Miles
 
Treating Infrastructure as Garbage
Treating Infrastructure as GarbageTreating Infrastructure as Garbage
Treating Infrastructure as Garbage
Datadog
 
SOLVING BIG DATA APP DEVELOPERS BIGGEST PAINS from Structure:Data 2013
SOLVING BIG DATA APP DEVELOPERS BIGGEST PAINS from Structure:Data 2013SOLVING BIG DATA APP DEVELOPERS BIGGEST PAINS from Structure:Data 2013
SOLVING BIG DATA APP DEVELOPERS BIGGEST PAINS from Structure:Data 2013
Gigaom
 
Manage Mission-Critical Requirements Through Agile in Innoslate
Manage Mission-Critical Requirements Through Agile in InnoslateManage Mission-Critical Requirements Through Agile in Innoslate
Manage Mission-Critical Requirements Through Agile in Innoslate
TaylorDuffy11
 
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
PatrickCrompton
 
Scaling Pinterest
Scaling PinterestScaling Pinterest
Scaling Pinterest
C4Media
 
Stepping into Usable Web
Stepping into Usable WebStepping into Usable Web
Stepping into Usable Web
Shajed Evan
 
From Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDEFrom Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDE
intelliyole
 
DevTools at Etsy
DevTools at EtsyDevTools at Etsy
DevTools at Etsy
Daniel Schauenberg
 
Cloud east shutl_talk
Cloud east shutl_talkCloud east shutl_talk
Cloud east shutl_talk
Volker Pacher
 
Symfony - Introduction
Symfony - IntroductionSymfony - Introduction
Symfony - Introduction
Piers Warmers
 
Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)
Michael Redlich
 
Unlocked London - Technical Track
Unlocked London - Technical TrackUnlocked London - Technical Track
Unlocked London - Technical Track
Wayne Walls
 
Kiwi PyCon 2011 - Audrey Roy Keynote Speech
Kiwi PyCon 2011 - Audrey Roy Keynote SpeechKiwi PyCon 2011 - Audrey Roy Keynote Speech
Kiwi PyCon 2011 - Audrey Roy Keynote Speech
Audrey Roy
 
muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"
Daniel Bryant
 
Lecture 3: Social Web Data Formats (2012)
Lecture 3: Social Web Data Formats (2012)Lecture 3: Social Web Data Formats (2012)
Lecture 3: Social Web Data Formats (2012)
Lora Aroyo
 
Unicon CAS Update March 2013
Unicon CAS Update March 2013Unicon CAS Update March 2013
Unicon CAS Update March 2013
Andrew Petro
 
An Analytics Toolkit Tour
An Analytics Toolkit TourAn Analytics Toolkit Tour
An Analytics Toolkit Tour
Rory Winston
 
Azure Machine Learning
Azure Machine LearningAzure Machine Learning
Azure Machine Learning
Davide Mauri
 
Urbit Launch Event
Urbit Launch EventUrbit Launch Event
Urbit Launch Event
TinaBregovi
 

Similar to Stanford session (20)

PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or Less
 
Treating Infrastructure as Garbage
Treating Infrastructure as GarbageTreating Infrastructure as Garbage
Treating Infrastructure as Garbage
 
SOLVING BIG DATA APP DEVELOPERS BIGGEST PAINS from Structure:Data 2013
SOLVING BIG DATA APP DEVELOPERS BIGGEST PAINS from Structure:Data 2013SOLVING BIG DATA APP DEVELOPERS BIGGEST PAINS from Structure:Data 2013
SOLVING BIG DATA APP DEVELOPERS BIGGEST PAINS from Structure:Data 2013
 
Manage Mission-Critical Requirements Through Agile in Innoslate
Manage Mission-Critical Requirements Through Agile in InnoslateManage Mission-Critical Requirements Through Agile in Innoslate
Manage Mission-Critical Requirements Through Agile in Innoslate
 
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
 
Scaling Pinterest
Scaling PinterestScaling Pinterest
Scaling Pinterest
 
Stepping into Usable Web
Stepping into Usable WebStepping into Usable Web
Stepping into Usable Web
 
From Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDEFrom Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDE
 
DevTools at Etsy
DevTools at EtsyDevTools at Etsy
DevTools at Etsy
 
Cloud east shutl_talk
Cloud east shutl_talkCloud east shutl_talk
Cloud east shutl_talk
 
Symfony - Introduction
Symfony - IntroductionSymfony - Introduction
Symfony - Introduction
 
Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)
 
Unlocked London - Technical Track
Unlocked London - Technical TrackUnlocked London - Technical Track
Unlocked London - Technical Track
 
Kiwi PyCon 2011 - Audrey Roy Keynote Speech
Kiwi PyCon 2011 - Audrey Roy Keynote SpeechKiwi PyCon 2011 - Audrey Roy Keynote Speech
Kiwi PyCon 2011 - Audrey Roy Keynote Speech
 
muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"muCon 2014 "Building Java Microservices for the Cloud"
muCon 2014 "Building Java Microservices for the Cloud"
 
Lecture 3: Social Web Data Formats (2012)
Lecture 3: Social Web Data Formats (2012)Lecture 3: Social Web Data Formats (2012)
Lecture 3: Social Web Data Formats (2012)
 
Unicon CAS Update March 2013
Unicon CAS Update March 2013Unicon CAS Update March 2013
Unicon CAS Update March 2013
 
An Analytics Toolkit Tour
An Analytics Toolkit TourAn Analytics Toolkit Tour
An Analytics Toolkit Tour
 
Azure Machine Learning
Azure Machine LearningAzure Machine Learning
Azure Machine Learning
 
Urbit Launch Event
Urbit Launch EventUrbit Launch Event
Urbit Launch Event
 

Stanford session

  • 1. Evernote and Android Ty Smith Sr. Android Engineer @tylersmithnet Wednesday, February 27, 13
  • 4. Daily Usage by Client Wednesday, February 27, 13
  • 9. API versions... • Android Compatibility Library Wednesday, February 27, 13
  • 10. API versions... • Android Compatibility Library • Reflection/API check Wednesday, February 27, 13
  • 11. API versions... • Android Compatibility Library • Reflection/API check • Emulators Wednesday, February 27, 13
  • 12. API versions... • Android Compatibility Library • Reflection/API check • Emulators • Third Party Libraries Wednesday, February 27, 13
  • 13. API versions... • Android Compatibility Library • Reflection/API check • Emulators • Third Party Libraries • Actionbar Sherlock, Holo Everywhere, Otto, and Dagger Wednesday, February 27, 13
  • 18. Device Sizes • Scrollview & Linear Layouts Wednesday, February 27, 13
  • 19. Device Sizes • Fragments Wednesday, February 27, 13
  • 21. Reusable Components • Notifications Wednesday, February 27, 13
  • 22. Reusable Components • Notifications • Camera Wednesday, February 27, 13
  • 23. Reusable Components • Notifications • Camera • Custom Views Wednesday, February 27, 13
  • 24. Reusable Components • Notifications • Camera • Custom Views • SDK Wednesday, February 27, 13
  • 25. Reusable Components • Notifications • Camera • Custom Views • SDK • Content Providers Wednesday, February 27, 13
  • 26. Reusable Components • Notifications • Camera • Custom Views • SDK • Content Providers • Intents Wednesday, February 27, 13
  • 27. Reusable Components • Notifications • Camera • Custom Views • SDK • Content Providers • Intents • Release Profiles Wednesday, February 27, 13
  • 29. Build System Difficulties • Multiple branches of development Wednesday, February 27, 13
  • 30. Build System Difficulties • Multiple branches of development • Dependencies on other teams' libraries Wednesday, February 27, 13
  • 31. Build System Difficulties • Multiple branches of development • Dependencies on other teams' libraries • Many distribution channels                                                   Wednesday, February 27, 13
  • 33. Goal • Security Wednesday, February 27, 13
  • 34. Goal • Security • Build History Wednesday, February 27, 13
  • 35. Goal • Security • Build History • Easy Distribution Wednesday, February 27, 13
  • 36. Build Process Profiles Dependencies .properties .APK QA Market Wednesday, February 27, 13
  • 38. The Evernote Platform & Android SDK Wednesday, February 27, 13
  • 40. The Evernote Platform • The platform ties together all of our products - and it’s available to everybody. Wednesday, February 27, 13
  • 41. The Evernote Platform • The platform ties together all of our products - and it’s available to everybody. • We build great apps that help you capture and recall important information. Wednesday, February 27, 13
  • 42. The Evernote Platform • The platform ties together all of our products - and it’s available to everybody. • We build great apps that help you capture and recall important information. • Third party developers add new and different ways to capture and recall information, and put your Evernote data in context with all of the other services you use. Wednesday, February 27, 13
  • 43. What’s in that cloud? Wednesday, February 27, 13
  • 44. What’s in that cloud? • Six billion HTTP requests last month. Wednesday, February 27, 13
  • 45. What’s in that cloud? • Six billion HTTP requests last month. • 20 thousand third party developers Wednesday, February 27, 13
  • 46. What’s in that cloud? • Six billion HTTP requests last month. • 20 thousand third party developers • 1.5 billion notes have been created to date Wednesday, February 27, 13
  • 47. What’s in that cloud? • Six billion HTTP requests last month. • 20 thousand third party developers • 1.5 billion notes have been created to date • 380TB of user data Wednesday, February 27, 13
  • 48. What’s in that cloud? • Six billion HTTP requests last month. • 20 thousand third party developers • 1.5 billion notes have been created to date • 380TB of user data • 40 million registered users Wednesday, February 27, 13
  • 52. Remember Everything • All of your notes live together in context. Search for a meal, and you’ll find related meetings, web clips, and more. Wednesday, February 27, 13
  • 53. Remember Everything • All of your notes live together in context. Search for a meal, and you’ll find related meetings, web clips, and more. • Every app that adds content to your Evernote account makes every other app smarter. Wednesday, February 27, 13
  • 54. The Platform Team Wednesday, February 27, 13
  • 55. The Platform Team • Develop APIs, SDKs, sample code and docs Wednesday, February 27, 13
  • 56. The Platform Team • Develop APIs, SDKs, sample code and docs • Educate developer communities about the Evernote Platform Wednesday, February 27, 13
  • 57. The Platform Team • Develop APIs, SDKs, sample code and docs • Educate developer communities about the Evernote Platform • Support developers Wednesday, February 27, 13
  • 58. The Platform Team • Develop APIs, SDKs, sample code and docs • Educate developer communities about the Evernote Platform • Support developers • Promote great apps to our user base Wednesday, February 27, 13
  • 61. Android SDK • Open Source and an open roadmap https://github.com/evernote/evernote-sdk-android Wednesday, February 27, 13
  • 62. Android SDK • Open Source and an open roadmap https://github.com/evernote/evernote-sdk-android • Library Project for easy integration Wednesday, February 27, 13
  • 63. Android SDK • Open Source and an open roadmap https://github.com/evernote/evernote-sdk-android • Library Project for easy integration • Maven Central for dependency management Wednesday, February 27, 13
  • 64. Android SDK • Open Source and an open roadmap https://github.com/evernote/evernote-sdk-android • Library Project for easy integration • Maven Central for dependency management • OAuth2 for secure authentication Wednesday, February 27, 13
  • 65. Android SDK • Open Source and an open roadmap https://github.com/evernote/evernote-sdk-android • Library Project for easy integration • Maven Central for dependency management • OAuth2 for secure authentication • Thrift for server-client communication Wednesday, February 27, 13
  • 66. Android SDK: Authentication private static final String CONSUMER_KEY = "Your consumer key"; private static final String CONSUMER_SECRET = "Your consumer secret"; private static final String EVERNOTE_HOST = EvernoteSession.HOST_SANDBOX; private EvernoteSession mEvernoteSession; @Override public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   mEvernoteSession = EvernoteSession.init(this, CONSUMER_KEY, CONSUMER_SECRET, EVERNOTE_HOST, null);   if (!mEvernoteSession.isLoggedIn())     mEvernoteSession.authenticate(this); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) {   super.onActivityResult(requestCode, resultCode, data);   if(requestCode == EvernoteSession.REQUEST_CODE_OAUTH && resultCode == Activity.RESULT_OK)     //Success, Update UI when OAuth activity returns result } Wednesday, February 27, 13
  • 67. Android SDK: Creating a note /** * This is a network request, call outside of main thread */ public void createNote(String title, String content) { Note note = new Note(); note.setTitle(title); String enmlContent = EvernoteUtil.NOTE_PREFIX +                   content +                   EvernoteUtil.NOTE_SUFFIX; note.setContent(enmlContent); note = mEvernoteSession.createNoteStore().createNote(mEvernoteSession.getAuthToken(), note); } Wednesday, February 27, 13
  • 68. Intent: Creating a note public static final String ACTION_NEW_NOTE = "com.evernote.action.CREATE_NEW_NOTE"; public void newNoteWithContent(View view) {   String text = "This is a sample text file.nThis is line two.";   String title = "New Note with Content";      Intent intent = new Intent();   intent.setAction(ACTION_NEW_NOTE);    // Set the note's title and plaintext content   intent.putExtra(Intent.EXTRA_TITLE, title);   intent.putExtra(Intent.EXTRA_TEXT, text);   startActivity(intent); } Wednesday, February 27, 13
  • 69. Intent: Viewing a note public static final String ACTION_VIEW_NOTE = "com.evernote.action.VIEW_NOTE"; public void viewNote(View view) {   String noteGuid = "63781605-3c3d-4e56-90a8-8be5e3ae7eee";   boolean hideTitleBar = true;      Intent intent = new Intent();   intent.setAction(ACTION_VIEW_NOTE);   intent.putExtra(EXTRA_NOTE_GUID, noteGuid);   intent.putExtra(EXTRA_FULL_SCREEN, hideTitleBar);    startActivity(intent); } Wednesday, February 27, 13
  • 70. Hiring an Android Engineer Wednesday, February 27, 13
  • 72. Personality Requirements • Great Communication Wednesday, February 27, 13
  • 73. Personality Requirements • Great Communication • Strong Passion Wednesday, February 27, 13
  • 74. Personality Requirements • Great Communication • Strong Passion • Problem Solver Wednesday, February 27, 13
  • 76. Technical Requirements • Object Oriented Design Wednesday, February 27, 13
  • 77. Technical Requirements • Object Oriented Design • Algorithms Wednesday, February 27, 13
  • 78. Technical Requirements • Object Oriented Design • Algorithms • Data Structures Wednesday, February 27, 13
  • 79. Technical Requirements • Object Oriented Design • Algorithms • Data Structures • Multithreaded Systems Wednesday, February 27, 13
  • 81. The Interview • Coding Challenge Wednesday, February 27, 13
  • 82. The Interview • Coding Challenge • Phone Screen Wednesday, February 27, 13
  • 83. The Interview • Coding Challenge • Phone Screen • 1 on 1 Interview Wednesday, February 27, 13
  • 84. The Interview • Coding Challenge • Phone Screen • 1 on 1 Interview • Multiple Engineers Wednesday, February 27, 13
  • 85. Questions? http://dev.evernote.com Ty Smith Sr. Android Engineer, Evernote tsmith@evernote.com @tylersmithnet Wednesday, February 27, 13