The document discusses scaling Android development at Evernote. It covers managing API versions and device sizes, creating reusable components, and dealing with build system difficulties. It also describes Evernote's Android SDK and platform, including authentication, creating notes, and intents. Hiring requirements for an Android engineer include strong communication, passion for problem solving, expertise in object oriented design, algorithms, data structures, and multithreaded systems. The interview process involves a coding challenge, phone screen, interview with multiple engineers.
Serverless: when functions and GitOps collideEdward Wilde
Abstract
--------
This talk introduces OpenFaaS, an open source platform for serverless functions. We begin by installing, running the platform and invoking a machine learning function within 60 seconds (ish). Next we step up and look at the level of architecture and key pillars of OpenFaaS: developer first, operator friendly and community focused. We close by looking at a multiuser platform built on top OpenFaas.
The objective of this talk is openFaaS the serverless platform and OpenFaaS cloud the multi-user environment for practicing git ops with functions.
Bio
---
Edward Wilde is a core contributor to the OpenFaaS project and platform architect at Form3
This document provides step-by-step instructions for how to use Evernote to take notes, organize notes into notebooks, create different types of notes like text, checklists, ink, audio and webcam notes, tag notes, and use the Evernote web clipper extension to save web pages and articles directly into Evernote notes. It outlines the process for creating an Evernote account, downloading the desktop app, making notes, editing note text, creating checklists and different media types of notes, tagging notes, and installing the web clipper browser extension to clip web content.
This document provides instructions for how to use Evernote, including how to create an account, download the software, create notebooks and notes, take webcam and audio notes, and use the web clipping feature. Key steps include going to the Evernote website to create an account, downloading the desktop app, creating local or synchronized notebooks to organize notes, and using the Evernote icon in the browser to clip full webpages or drag and drop images into notes. The tutorial was created to help beginners learn the basic features of the Evernote note taking software.
The Secret Weapon (Evernote)A no bs approach to personal productivity.William Marco Locañas
The document describes how to set up and use the free note-taking application Evernote as a productivity tool called "The Secret Weapon". It explains how to download and set up an Evernote account, create notebooks and tags for organizing notes, and import emails from Outlook to Evernote notes in order to manage tasks and stay organized across devices. The tutorial provides a step-by-step process for tagging emails with contextual information like time, location, and project to prioritize tasks in Evernote.
We discovered Mirah while looking for a way to remedy JRuby spin-up delays on App Engine. Dubious, a simple framework written in Mirah, but following Rails conventions, that provides unprecidented scalability and efficiency.
Open source delivers great digital experiencesJeffrey McGuire
Presentation from the Digital and Social Masterclass on Tour (http://masterclassontour.com/marketing/) by Jeffrey A. "jam" McGuire, Open Source Evangelist, and Joe Wkyes, VP of Global Channel from Acquia. Presented on January 24, 2014 in Dublin.
Topics include:
- How open source delivers what businesses and enterprises need to succeed
- Busting open source myths
- The convergence of Content, Community and Commerce
- Great digital experiences delivered by Drupal, Acquia, and its partners
The document describes the software factory team's approach to improving quality and productivity. It summarizes their use of various tools for documentation (Confluence wiki), issue tracking (Jira), source control (Subversion and Git), package management (Nexus), continuous integration (Jenkins), quality management (Sonar), acceptance testing, code reviews (Crucible), and reporting/dashboards. The goal is to establish development best practices and provide training and support to teams.
The document discusses WordPress multisite, which allows one WordPress installation to host multiple sites. Some benefits of multisite include updating all sites with one click, sharing plugins and themes across sites, hosting client sites, and using a single site for development and deployment. The document provides instructions for setting up and configuring a multisite network, including activating it in wp-config.php, adding sites, managing users and domains, and using useful plugins like domain mapping.
Serverless: when functions and GitOps collideEdward Wilde
Abstract
--------
This talk introduces OpenFaaS, an open source platform for serverless functions. We begin by installing, running the platform and invoking a machine learning function within 60 seconds (ish). Next we step up and look at the level of architecture and key pillars of OpenFaaS: developer first, operator friendly and community focused. We close by looking at a multiuser platform built on top OpenFaas.
The objective of this talk is openFaaS the serverless platform and OpenFaaS cloud the multi-user environment for practicing git ops with functions.
Bio
---
Edward Wilde is a core contributor to the OpenFaaS project and platform architect at Form3
This document provides step-by-step instructions for how to use Evernote to take notes, organize notes into notebooks, create different types of notes like text, checklists, ink, audio and webcam notes, tag notes, and use the Evernote web clipper extension to save web pages and articles directly into Evernote notes. It outlines the process for creating an Evernote account, downloading the desktop app, making notes, editing note text, creating checklists and different media types of notes, tagging notes, and installing the web clipper browser extension to clip web content.
This document provides instructions for how to use Evernote, including how to create an account, download the software, create notebooks and notes, take webcam and audio notes, and use the web clipping feature. Key steps include going to the Evernote website to create an account, downloading the desktop app, creating local or synchronized notebooks to organize notes, and using the Evernote icon in the browser to clip full webpages or drag and drop images into notes. The tutorial was created to help beginners learn the basic features of the Evernote note taking software.
The Secret Weapon (Evernote)A no bs approach to personal productivity.William Marco Locañas
The document describes how to set up and use the free note-taking application Evernote as a productivity tool called "The Secret Weapon". It explains how to download and set up an Evernote account, create notebooks and tags for organizing notes, and import emails from Outlook to Evernote notes in order to manage tasks and stay organized across devices. The tutorial provides a step-by-step process for tagging emails with contextual information like time, location, and project to prioritize tasks in Evernote.
We discovered Mirah while looking for a way to remedy JRuby spin-up delays on App Engine. Dubious, a simple framework written in Mirah, but following Rails conventions, that provides unprecidented scalability and efficiency.
Open source delivers great digital experiencesJeffrey McGuire
Presentation from the Digital and Social Masterclass on Tour (http://masterclassontour.com/marketing/) by Jeffrey A. "jam" McGuire, Open Source Evangelist, and Joe Wkyes, VP of Global Channel from Acquia. Presented on January 24, 2014 in Dublin.
Topics include:
- How open source delivers what businesses and enterprises need to succeed
- Busting open source myths
- The convergence of Content, Community and Commerce
- Great digital experiences delivered by Drupal, Acquia, and its partners
The document describes the software factory team's approach to improving quality and productivity. It summarizes their use of various tools for documentation (Confluence wiki), issue tracking (Jira), source control (Subversion and Git), package management (Nexus), continuous integration (Jenkins), quality management (Sonar), acceptance testing, code reviews (Crucible), and reporting/dashboards. The goal is to establish development best practices and provide training and support to teams.
The document discusses WordPress multisite, which allows one WordPress installation to host multiple sites. Some benefits of multisite include updating all sites with one click, sharing plugins and themes across sites, hosting client sites, and using a single site for development and deployment. The document provides instructions for setting up and configuring a multisite network, including activating it in wp-config.php, adding sites, managing users and domains, and using useful plugins like domain mapping.
You've probably heard of PhoneGap, the free, open source framework for creating mobile apps using standard web programming, but maybe you're skeptical. You probably have a lot of questions. How easy is it to create an app with PhoneGap? Can I convert my web site to a mobile app? Will the app be too slow to use?
In the session I will, with nothing up my sleeves, convert a mobile web site into a PhoneGap app for both iOS and Android. I will take advantage of both device and HTML5 features. I will show solutions to the performance challenges PhoneGap apps sometimes suffer from. I will show to structure your web site to make it easy to convert to a device app.
In this presentation, Mike walks through the philosophical shift of treating the servers that you have in-house as if they were part of a “cloud” and disposable, and then jumps into a technical demonstration of how to actually tear down and reconstruct your infrastructure at a moment’s notice.
Manage Mission-Critical Requirements Through Agile in InnoslateTaylorDuffy11
The document discusses an upcoming webinar on agile systems engineering and the Innoslate tool. It provides an agenda that will cover the agile manifesto, agile systems engineering processes, the difference between requirements and issues, and the middle-out approach. An example of how Innoslate was developed using agile principles is provided. The webinar will demonstrate how Innoslate supports agile systems engineering and software development through requirements management, software tracking, and other program management tools. Attendees are invited to ask questions during the webinar.
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...PatrickCrompton
The document discusses configuration management challenges and how Chef addresses them. It describes how Chef uses recipes, cookbooks and infrastructure as code to automate provisioning and configuration of systems and applications. This allows infrastructure to be easily built, managed and scaled. Complex environments that were previously difficult to manage can now be defined and updated via code.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1awkL99.
Details on Pinterest's architeture, its systems -Pinball, Frontdoor-, and stack - MongoDB, Cassandra, Memcache, Redis, Flume, Kafka, EMR, Qubole, Redshift, Python, Java, Go, Nutcracker, Puppet, etc. Filmed at qconsf.com.
Yash Nelapati is an infrastructure engineer at Pinterest where he focusses on scalability, capacity planning and architecture. Prior to Pinterest he was into web development and rapidly prototyping UI. Marty Weiner joined Pinterest in early 2011 as the 2nd engineer. Previously worked at Azul Systems as a VM engineer focused on building/improving the JIT compilers in HotSpot.
The document discusses the history of IntelliJ IDEA from 2000 to 2013. Some key points include:
- IntelliJ IDEA started as a plugin for JBuilder in 2000 and is now a product line of 8 IDEs, a compiler, and code browser.
- Over the years it has expanded its supported languages like JavaScript, Python, Ruby, and Groovy. New IDEs were also introduced like Android Studio, AppCode, PyCharm, and PhpStorm.
- The development practices focus on continuous integration, releasing early previews, addressing issues quickly, and relying more on automated acceptance tests than unit tests.
- The development model emphasizes flexibility over planning, with developers responsible for
The DevTools team at Etsy consists of 5 engineers who build and maintain tools to help the 150 committers at Etsy. These tools include Deployinator for deploying code, DeveloperVMs for local development environments, Jenkins slaves for continuous integration, DevDB Proxy for accessing production data safely, and various monitoring and debugging tools like StatsD, Logster, Graphite, and Supergrep. The DevTools team works to foster collaboration between development and operations through these shared tools.
Shutl was experiencing performance issues with their MySQL database as the amount of data and relationships grew. They migrated to Neo4j, a graph database, to better handle the complex relationships in their data. Some benefits of Neo4j included more efficient querying of relationships, easier modeling of new data, and more consistent query performance as the database size increased. However, testing and migrations were more challenging with the schema-less Neo4j database. Shutl developed their own tools to help with testing and importing data.
This document outlines the topics that will be covered in two sessions on Symfony. Session 1 will include an introduction to Symfony, explaining what it is, its core concepts, and a typical application structure. It will also cover installing Symfony and starting a demo project. Session 2 will cover CRUD and the MVC pattern with models, cleaning up interfaces, forms and validation, dependency injection, security, and using Symfony components without Symfony.
This document contains notes from a presentation or workshop on July 11, 2013 in London. It discusses various topics related to software development including parallelism, modular design, horizontal scaling, agile development, and security. Parallelism is achieved by splitting tasks like processing 1 million records across multiple nodes. Modular design involves decomposing problems and solutions into independent, interchangeable modules.
muCon 2014 "Building Java Microservices for the Cloud"Daniel Bryant
Building microservices for the Cloud is easy, right?... Perhaps, but if you want to build effective and reliable services that not only work correctly within the Cloud, but also take advantage of running within this unique environment, then you might be in for a surprise. This talk will introduce lessons learnt over the past several years of designing and implementing successful Cloud-based Java applications which we have codified into our Cloud development ‘DHARMA' principles; Documented (just enough); Highly cohesive / lowly coupled (all the way down); Automated from commit to cloud; Resource aware; Monitored thoroughly; and Antifragile.
We will look at these lessons from both a theoretic and practical perspective using several real-world case studies involving a move from monolithic applications deployed into a data center on a 'big bang' schedule, to a platform of JVM-based loosely-coupled components, all being continuously deployed into the Cloud. Topics discussed will include API contracts and documentation, architecture, build and deployment pipelines, Cloud fabric properties, monitoring in a distributed environment, and fault-tolerant design patterns.
This presentation was delivered at muCon 2015 on 27/11/14, the microservice conference. The video can be seen here: https://skillsmatter.com/skillscasts/5938-developing-java-services-for-the-cloud
The document summarizes updates and plans regarding the Central Authentication Service (CAS) software. It discusses recent releases of CAS Server 3.5 and related addons. It covers Unicon's cooperative support activities for CAS, including maintaining current releases, contributing to CAS 4, and innovating new features. Upcoming conferences and seminars on CAS and Shibboleth are also mentioned.
R, Python, Java/C++, and Armadillo were compared for data analysis and analytics applications. R is a domain-specific language for statistics with many libraries but performance limitations. Python has a readable syntax and is well-supported but some analytics libraries are immature. Java/C++ provide ultimate power/flexibility but at the cost of development time. Armadillo is a C++ library for numerical applications and some statistics. A simple linear model was demonstrated on airline passenger data using Armadillo.
Si è tornato a parlare molto di Machine Learning negli ultimi anni. Grazie anche al fatto che è possibile oggi processare enormi moli di dati in tempi (relativamente) veloci questa parte dell'informatica sta vivendo una seconda giovinezza.
In questa sessione vedremo cos'è il machine learning, quali sono le diverse casistiche tecniche e funzionali in cui può essere usato ed inizieremo a "giocare" con i dati per vedere fin dove possiamo spingerci, usando strumenti On-Premise e quindi spostandoci poi sull'offerta Azure Machine Learning dove, una volta fatta propria la teoria, si possono realizzare soluzioni estremamente complesse in modo molto visuale, oppure integrandosi con R ed IPython e sfruttare la scalabilità di Azure per avere performance ottimali. Il tutto senza dimenticare che gli algoritmi così ottenuti possono essere facilmente integrati nelle nostre applicazioni semplicemente invocando un web service.
This document announces a 6-week online hackathon hosted by Encode Club to build projects using the Urbit platform. It provides details on workshops, prizes, key dates and how to participate. Developers of all skill levels are encouraged to join, either individually or in teams, with support provided. The goal is to help developers learn, build and advance their careers in web3 technologies.
You've probably heard of PhoneGap, the free, open source framework for creating mobile apps using standard web programming, but maybe you're skeptical. You probably have a lot of questions. How easy is it to create an app with PhoneGap? Can I convert my web site to a mobile app? Will the app be too slow to use?
In the session I will, with nothing up my sleeves, convert a mobile web site into a PhoneGap app for both iOS and Android. I will take advantage of both device and HTML5 features. I will show solutions to the performance challenges PhoneGap apps sometimes suffer from. I will show to structure your web site to make it easy to convert to a device app.
In this presentation, Mike walks through the philosophical shift of treating the servers that you have in-house as if they were part of a “cloud” and disposable, and then jumps into a technical demonstration of how to actually tear down and reconstruct your infrastructure at a moment’s notice.
Manage Mission-Critical Requirements Through Agile in InnoslateTaylorDuffy11
The document discusses an upcoming webinar on agile systems engineering and the Innoslate tool. It provides an agenda that will cover the agile manifesto, agile systems engineering processes, the difference between requirements and issues, and the middle-out approach. An example of how Innoslate was developed using agile principles is provided. The webinar will demonstrate how Innoslate supports agile systems engineering and software development through requirements management, software tracking, and other program management tools. Attendees are invited to ask questions during the webinar.
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...PatrickCrompton
The document discusses configuration management challenges and how Chef addresses them. It describes how Chef uses recipes, cookbooks and infrastructure as code to automate provisioning and configuration of systems and applications. This allows infrastructure to be easily built, managed and scaled. Complex environments that were previously difficult to manage can now be defined and updated via code.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1awkL99.
Details on Pinterest's architeture, its systems -Pinball, Frontdoor-, and stack - MongoDB, Cassandra, Memcache, Redis, Flume, Kafka, EMR, Qubole, Redshift, Python, Java, Go, Nutcracker, Puppet, etc. Filmed at qconsf.com.
Yash Nelapati is an infrastructure engineer at Pinterest where he focusses on scalability, capacity planning and architecture. Prior to Pinterest he was into web development and rapidly prototyping UI. Marty Weiner joined Pinterest in early 2011 as the 2nd engineer. Previously worked at Azul Systems as a VM engineer focused on building/improving the JIT compilers in HotSpot.
The document discusses the history of IntelliJ IDEA from 2000 to 2013. Some key points include:
- IntelliJ IDEA started as a plugin for JBuilder in 2000 and is now a product line of 8 IDEs, a compiler, and code browser.
- Over the years it has expanded its supported languages like JavaScript, Python, Ruby, and Groovy. New IDEs were also introduced like Android Studio, AppCode, PyCharm, and PhpStorm.
- The development practices focus on continuous integration, releasing early previews, addressing issues quickly, and relying more on automated acceptance tests than unit tests.
- The development model emphasizes flexibility over planning, with developers responsible for
The DevTools team at Etsy consists of 5 engineers who build and maintain tools to help the 150 committers at Etsy. These tools include Deployinator for deploying code, DeveloperVMs for local development environments, Jenkins slaves for continuous integration, DevDB Proxy for accessing production data safely, and various monitoring and debugging tools like StatsD, Logster, Graphite, and Supergrep. The DevTools team works to foster collaboration between development and operations through these shared tools.
Shutl was experiencing performance issues with their MySQL database as the amount of data and relationships grew. They migrated to Neo4j, a graph database, to better handle the complex relationships in their data. Some benefits of Neo4j included more efficient querying of relationships, easier modeling of new data, and more consistent query performance as the database size increased. However, testing and migrations were more challenging with the schema-less Neo4j database. Shutl developed their own tools to help with testing and importing data.
This document outlines the topics that will be covered in two sessions on Symfony. Session 1 will include an introduction to Symfony, explaining what it is, its core concepts, and a typical application structure. It will also cover installing Symfony and starting a demo project. Session 2 will cover CRUD and the MVC pattern with models, cleaning up interfaces, forms and validation, dependency injection, security, and using Symfony components without Symfony.
This document contains notes from a presentation or workshop on July 11, 2013 in London. It discusses various topics related to software development including parallelism, modular design, horizontal scaling, agile development, and security. Parallelism is achieved by splitting tasks like processing 1 million records across multiple nodes. Modular design involves decomposing problems and solutions into independent, interchangeable modules.
muCon 2014 "Building Java Microservices for the Cloud"Daniel Bryant
Building microservices for the Cloud is easy, right?... Perhaps, but if you want to build effective and reliable services that not only work correctly within the Cloud, but also take advantage of running within this unique environment, then you might be in for a surprise. This talk will introduce lessons learnt over the past several years of designing and implementing successful Cloud-based Java applications which we have codified into our Cloud development ‘DHARMA' principles; Documented (just enough); Highly cohesive / lowly coupled (all the way down); Automated from commit to cloud; Resource aware; Monitored thoroughly; and Antifragile.
We will look at these lessons from both a theoretic and practical perspective using several real-world case studies involving a move from monolithic applications deployed into a data center on a 'big bang' schedule, to a platform of JVM-based loosely-coupled components, all being continuously deployed into the Cloud. Topics discussed will include API contracts and documentation, architecture, build and deployment pipelines, Cloud fabric properties, monitoring in a distributed environment, and fault-tolerant design patterns.
This presentation was delivered at muCon 2015 on 27/11/14, the microservice conference. The video can be seen here: https://skillsmatter.com/skillscasts/5938-developing-java-services-for-the-cloud
The document summarizes updates and plans regarding the Central Authentication Service (CAS) software. It discusses recent releases of CAS Server 3.5 and related addons. It covers Unicon's cooperative support activities for CAS, including maintaining current releases, contributing to CAS 4, and innovating new features. Upcoming conferences and seminars on CAS and Shibboleth are also mentioned.
R, Python, Java/C++, and Armadillo were compared for data analysis and analytics applications. R is a domain-specific language for statistics with many libraries but performance limitations. Python has a readable syntax and is well-supported but some analytics libraries are immature. Java/C++ provide ultimate power/flexibility but at the cost of development time. Armadillo is a C++ library for numerical applications and some statistics. A simple linear model was demonstrated on airline passenger data using Armadillo.
Si è tornato a parlare molto di Machine Learning negli ultimi anni. Grazie anche al fatto che è possibile oggi processare enormi moli di dati in tempi (relativamente) veloci questa parte dell'informatica sta vivendo una seconda giovinezza.
In questa sessione vedremo cos'è il machine learning, quali sono le diverse casistiche tecniche e funzionali in cui può essere usato ed inizieremo a "giocare" con i dati per vedere fin dove possiamo spingerci, usando strumenti On-Premise e quindi spostandoci poi sull'offerta Azure Machine Learning dove, una volta fatta propria la teoria, si possono realizzare soluzioni estremamente complesse in modo molto visuale, oppure integrandosi con R ed IPython e sfruttare la scalabilità di Azure per avere performance ottimali. Il tutto senza dimenticare che gli algoritmi così ottenuti possono essere facilmente integrati nelle nostre applicazioni semplicemente invocando un web service.
This document announces a 6-week online hackathon hosted by Encode Club to build projects using the Urbit platform. It provides details on workshops, prizes, key dates and how to participate. Developers of all skill levels are encouraged to join, either individually or in teams, with support provided. The goal is to help developers learn, build and advance their careers in web3 technologies.
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
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
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
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