SlideShare a Scribd company logo
1 of 76
Download to read offline
PayPal’s New Android SDK:
Kicking Ass With Payments
Tim Messerschmidt
Droidcon Paris 2013
This talk will be about
-  What is PayPal?
-  Log In with PayPal
-  PayPal Android SDK
Who Am I?
Tim Messerschmidt,
Developer Evangelist
working for PayPal.
Android Developer
living in Berlin.
I ♥ Java, Ruby, CSS3,
HTML5 & JavaScript!
What is PayPal?
Enable
merchants to
sell online
What is PayPal?
Enable
customers to
buy online
What is PayPal?
Payment Scenario
Sender Receiver
Transaction
eCommerce
Sender Receiver
Transaction
Item /
Service
Secure
Easy
Fast
Requirements
128m
active users
What is PayPal?
193
countries & regions
What is PayPal?
25
supported currencies
What is PayPal?
80
localized websites
What is PayPal?
France
fully supported
What is PayPal?
Local Merchants
Big Mac Menu:
-  Fries
-  Ketchup
-  Water
... keeping it healthy
Painless Payments for Droids
Tim Messerschmidt
Identity
Login with...
Google Facebook Twitter
... or PayPal.
Login with...
Name
Email
Date of Birth
Locale
Time Zone
Address
Gender
Language
Phone Number
Verified Account
Creation Date
Your Identity
Log In via
PayPal in the
browser or a
WebView.
Log In with PayPal
Authorization &
Authentication
Log In with PayPal
OAuth 2.0 &
OpenID Connect
No need to (re-)enter
your password after
logging in
Seamless Checkout
Painless Payments for Droids
Tim Messerschmidt
Summarizing Identity
Painless Payments for Droids
Tim Messerschmidt
Money
Lots Of Money
Painless Payments for Droids
Tim Messerschmidt
Digital Goods
Physical Goods
Physical Goods
2 ways
Backend or via SDK
Using PayPal
Android SDK
Sample App:
•  Sell a football jersey
•  Fast Checkout
•  Nice Interface
Present the
product & allow
to purchase it
Android SDK
Allow to pay via
PayPal or Card
Android SDK
The user enters
his credentials:
•  Email
•  Password
Android SDK
The user needs
to confirm his
payment...
Android SDK
... and will be
presented a
confirmation of
his purchase
afterwards.
Android SDK
That’s nice... BUT:
What if the user
doesn’t want to use
PayPal or doesn’t
have an account?
Accept credit
cards in your
application
manually or...
Android SDK
... via image
recognition
technology in
your app!
Android SDK
Implementation
In 10 minutes
How-to
<!-- Hardware features -->
<uses-feature
android:name="android.hardware.camera”
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus”
android:required="false" />
<!–- Permissions -->
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission
android:name="android.permission.INTERNET" />
<!-- card.io scanning -->
<uses-permission
android:name="android.permission.CAMERA" />
<uses-permission
android:name="android.permission.VIBRATE" />
How-to
AndroidManifest.xml:
<!-- Hardware features -->
<uses-feature
android:name="android.hardware.camera”
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus”
android:required="false" />
<!–- Permissions -->
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission
android:name="android.permission.INTERNET" />
<!-- card.io scanning -->
<uses-permission
android:name="android.permission.CAMERA" />
<uses-permission
android:name="android.permission.VIBRATE" />
How-to
AndroidManifest.xml:
<!-- Hardware features -->
<uses-feature
android:name="android.hardware.camera”
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus”
android:required="false" />
<!–- Permissions -->
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission
android:name="android.permission.INTERNET" />
<!-- card.io scanning -->
<uses-permission
android:name="android.permission.CAMERA" />
<uses-permission
android:name="android.permission.VIBRATE" />
How-to
AndroidManifest.xml:
<!-- Hardware features -->
<uses-feature
android:name="android.hardware.camera”
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus”
android:required="false" />
<!–- Permissions -->
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission
android:name="android.permission.INTERNET" />
<!-- card.io scanning -->
<uses-permission
android:name="android.permission.CAMERA" />
<uses-permission
android:name="android.permission.VIBRATE" />
How-to
AndroidManifest.xml:
<service
android:name="com.paypal.android.sdk.payments.PayPalService"
android:exported="false"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.LoginActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentMethodActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentCompletedActivity"/>
<activity
android:name="io.card.payment.CardIOActivity"
android:configChanges="keyboardHidden|orientation"/>
<activity
android:name="io.card.payment.DataEntryActivity"/>
How-to
AndroidManifest.xml:
<service
android:name="com.paypal.android.sdk.payments.PayPalService"
android:exported="false"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.LoginActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentMethodActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentCompletedActivity"/>
<activity
android:name="io.card.payment.CardIOActivity"
android:configChanges="keyboardHidden|orientation"/>
<activity
android:name="io.card.payment.DataEntryActivity"/>
How-to
AndroidManifest.xml:
<service
android:name="com.paypal.android.sdk.payments.PayPalService"
android:exported="false"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.LoginActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentMethodActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity"/>
<activity
android:name="com.paypal.android.sdk.payments.PaymentCompletedActivity"/>
<activity
android:name="io.card.payment.CardIOActivity"
android:configChanges="keyboardHidden|orientation"/>
<activity
android:name="io.card.payment.DataEntryActivity"/>
How-to
AndroidManifest.xml:
// Can be NO_NETWORK for OFFLINE, SANDBOX for TESTING and LIVE for PRODUCTION
private static final String CONFIG_ENVIRONMENT =
PaymentActivity.ENVIRONMENT_NO_NETWORK;
// note that these credentials will differ between live & sandbox environments.
private static final String CONFIG_CLIENT_ID =
"credential from developer.paypal.com";
// when testing in sandbox, this is likely the -facilitator email address.
private static final String CONFIG_RECEIVER_EMAIL =
"your@email.com";
How-to
Your Activity:
Define your credentials and Environment first.
// Can be NO_NETWORK for OFFLINE, SANDBOX for TESTING and LIVE for PRODUCTION
private static final String CONFIG_ENVIRONMENT =
PaymentActivity.ENVIRONMENT_NO_NETWORK;
// note that these credentials will differ between live & sandbox environments.
private static final String CONFIG_CLIENT_ID =
"credential from developer.paypal.com";
// when testing in sandbox, this is likely the -facilitator email address.
private static final String CONFIG_RECEIVER_EMAIL =
"your@email.com";
How-to
Your Activity:
Define your credentials and Environment first.
// Can be NO_NETWORK for OFFLINE, SANDBOX for TESTING and LIVE for PRODUCTION
private static final String CONFIG_ENVIRONMENT =
PaymentActivity.ENVIRONMENT_NO_NETWORK;
// note that these credentials will differ between live & sandbox environments.
private static final String CONFIG_CLIENT_ID =
"credential from developer.paypal.com";
// when testing in sandbox, this is likely the -facilitator email address.
private static final String CONFIG_RECEIVER_EMAIL =
"your@email.com";
How-to
Your Activity:
Define your credentials and Environment first.
// Can be NO_NETWORK for OFFLINE, SANDBOX for TESTING and LIVE for PRODUCTION
private static final String CONFIG_ENVIRONMENT =
PaymentActivity.ENVIRONMENT_NO_NETWORK;
// note that these credentials will differ between live & sandbox environments.
private static final String CONFIG_CLIENT_ID =
"credential from developer.paypal.com";
// when testing in sandbox, this is likely the -facilitator email address.
private static final String CONFIG_RECEIVER_EMAIL =
"your@email.com";
How-to
Your Activity:
Define your credentials and Environment first.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// your code here
Intent intent = new Intent(this, PayPalService.class);
intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT);
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID);
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL);
startService(intent);
}
How-to
Your Activity:
Start the PayPal-Service in your onCreate( ) method
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// your code here
Intent intent = new Intent(this, PayPalService.class);
intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT);
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID);
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL);
startService(intent);
}
How-to
Your Activity:
Start the PayPal-Service in your onCreate( ) method
PayPalPayment thingToBuy =
new PayPalPayment(new BigDecimal(“59.99"), "USD", "Paris SG Jersey");
Intent intent = new Intent(this, PaymentActivity.class);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, "myPayer");
// Repeat passing the credentials
intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT);
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID);
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL);
startActivityForResult(intent, PAYMENT_REQUEST);
How-to
Your Activity:
Start the payment itself via a button or something similar
PayPalPayment thingToBuy =
new PayPalPayment(new BigDecimal(“59.99"), "USD", "Paris SG Jersey");
Intent intent = new Intent(this, PaymentActivity.class);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, "myPayer");
// Repeat passing the credentials
intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT);
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID);
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL);
startActivityForResult(intent, PAYMENT_REQUEST);
How-to
Your Activity:
Start the payment itself via a button or something similar
PayPalPayment thingToBuy =
new PayPalPayment(new BigDecimal(“59.99"), "USD", "Paris SG Jersey");
Intent intent = new Intent(this, PaymentActivity.class);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, "myPayer");
// Repeat passing the credentials
intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT);
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID);
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL);
startActivityForResult(intent, PAYMENT_REQUEST);
How-to
Your Activity:
Start the payment itself via a button or something similar
PayPalPayment thingToBuy =
new PayPalPayment(new BigDecimal(“59.99"), "USD", "Paris SG Jersey");
Intent intent = new Intent(this, PaymentActivity.class);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, "myPayer");
// Repeat passing the credentials
intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT);
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID);
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL);
startActivityForResult(intent, PAYMENT_REQUEST);
How-to
Your Activity:
Start the payment itself via a button or something similar
PayPalPayment thingToBuy =
new PayPalPayment(new BigDecimal(“59.99"), "USD", "Paris SG Jersey");
Intent intent = new Intent(this, PaymentActivity.class);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, "myPayer");
// Repeat passing the credentials
intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT);
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID);
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL);
startActivityForResult(intent, PAYMENT_REQUEST);
How-to
Your Activity:
Start the payment itself via a button or something similar
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
PaymentConfirmation confirm =
data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
if (confirm != null) {
verifyPayment(confirm);
}
} else if (resultCode == Activity.RESULT_CANCELED) {
// Show the user that this got canceled
} else if (resultCode == PaymentActivity.RESULT_PAYMENT_INVALID) {
// Check the docs ;)
}
}
How-to
Your Activity:
Check the result after the user used PayPal
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
PaymentConfirmation confirm =
data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
if (confirm != null) {
verifyPayment(confirm);
}
} else if (resultCode == Activity.RESULT_CANCELED) {
// Show the user that this got canceled
} else if (resultCode == PaymentActivity.RESULT_PAYMENT_INVALID) {
// Check the docs ;)
}
}
How-to
Your Activity:
Check the result after the user used PayPal
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
PaymentConfirmation confirm =
data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
if (confirm != null) {
verifyPayment(confirm);
}
} else if (resultCode == Activity.RESULT_CANCELED) {
// Show the user that this got canceled
} else if (resultCode == PaymentActivity.RESULT_PAYMENT_INVALID) {
// Check the docs ;)
}
}
How-to
Your Activity:
Check the result after the user used PayPal
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
PaymentConfirmation confirm =
data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
if (confirm != null) {
verifyPayment(confirm);
}
} else if (resultCode == Activity.RESULT_CANCELED) {
// Show the user that this got canceled
} else if (resultCode == PaymentActivity.RESULT_PAYMENT_INVALID) {
// Check the docs ;)
}
}
How-to
Your Activity:
Check the result after the user used PayPal
@Override
public void onDestroy() {
stopService(new Intent(this, PayPalService.class));
super.onDestroy();
}
How-to
Your Activity:
Stop your service in the lifecycle’s onDestroy( ) method to make sure it ends nicely
and doesn’t use unneeded resources.
Your app needs to
communicate with
a server to verify
payments
Verifying Payments
Criteria to use to
verify payments:
bit.ly/19FIis6
Verifying Payments
{
"proof_of_payment": {
"rest_api": {
"state": "approved",
"payment_id": "API-PAYMENT-ID-1843"
}
},
"payment": {
"short_description": "Paris SG Jersey",
"amount": ”59.99",
"currency_code": "USD"
},
"client": {
"platform": "Android",
"paypal_sdk_version": "1.0.2",
"environment": "live",
"product_name": "PayPal Android SDK"
}
}
Verifying Payments
REST-API proof of payment: Adaptive Payments proof of payment:
{
"proof_of_payment": {
"adaptive_payment": {
"pay_key": "AP-70M68096ML426802W",
"payment_exec_status": "COMPLETED",
"timestamp": "2013-02-20T00:26:25Z",
"app_id": "APP-91B933855X481767M"
}
},
"payment": {
"short_description": "Paris SG Shirt",
"amount": "59.99",
"currency_code": "USD"
},
"client": {
"platform": "Android",
"paypal_sdk_version": "1.0.2",
"environment": "live",
"product_name": "PayPal Android SDK"
}
}
{
"proof_of_payment": {
"rest_api": {
"state": "approved",
"payment_id": "API-PAYMENT-ID-1843"
}
},
"payment": {
"short_description": "Paris SG Jersey",
"amount": ”59.99",
"currency_code": "USD"
},
"client": {
"platform": "Android",
"paypal_sdk_version": "1.0.2",
"environment": "live",
"product_name": "PayPal Android SDK"
}
}
Verifying Payments
REST-API proof of payment: Adaptive Payments proof of payment:
{
"proof_of_payment": {
"adaptive_payment": {
"pay_key": "AP-70M68096ML426802W",
"payment_exec_status": "COMPLETED",
"timestamp": "2013-02-20T00:26:25Z",
"app_id": "APP-91B933855X481767M"
}
},
"payment": {
"short_description": "Paris SG Shirt",
"amount": "59.99",
"currency_code": "USD"
},
"client": {
"platform": "Android",
"paypal_sdk_version": "1.0.2",
"environment": "live",
"product_name": "PayPal Android SDK"
}
}
Somebody did that
work for you:
bit.ly/19FHQde
Verifying Payments
Android Studio
Gradle doesn’t
support
bundling .so
files with your
apk yet
US only
Europe coming soon!
Important
Documentation
developer.paypal.com
Information
Open Source
GitHub.com/paypal
Information
Questions?
Thanks!
Tim Messerschmidt
@SeraAndroid
tmesserschmidt@paypal.com
SlideShare.com/paypal

More Related Content

Viewers also liked

Don't Stop Believing Says Michelle Lin
Don't Stop Believing Says Michelle LinDon't Stop Believing Says Michelle Lin
Don't Stop Believing Says Michelle LinZillionDesigns
 
Brain NECSTwork - FPGA because
Brain NECSTwork - FPGA becauseBrain NECSTwork - FPGA because
Brain NECSTwork - FPGA becauseBrain NECSTwork
 
Using Social Media2
Using Social Media2Using Social Media2
Using Social Media2Jane Hart
 
Representing Chemicals Digitally: An overview of Cheminformatics
Representing Chemicals Digitally: An overview of CheminformaticsRepresenting Chemicals Digitally: An overview of Cheminformatics
Representing Chemicals Digitally: An overview of CheminformaticsJames Jeffryes
 
The Trouble With Tribbles: How LOLcats Ate Our Engagement
The Trouble With Tribbles: How LOLcats Ate Our EngagementThe Trouble With Tribbles: How LOLcats Ate Our Engagement
The Trouble With Tribbles: How LOLcats Ate Our EngagementJeffrey Stevens
 
A importância da colaboração na Web 2.0
A importância da colaboração na Web 2.0A importância da colaboração na Web 2.0
A importância da colaboração na Web 2.0UTFPR
 
Everyone has a story
Everyone has a storyEveryone has a story
Everyone has a storyshepatte
 
Content is Currency - FinanceConnect 2015
Content is Currency - FinanceConnect 2015Content is Currency - FinanceConnect 2015
Content is Currency - FinanceConnect 2015LinkedIn India
 
Moving Beyond The Newsletter: Using Technology To Meet Parents Where They Are
Moving Beyond The Newsletter: Using Technology To Meet Parents Where They AreMoving Beyond The Newsletter: Using Technology To Meet Parents Where They Are
Moving Beyond The Newsletter: Using Technology To Meet Parents Where They AreChris Wejr
 
Housing, the 2015 General Election and Beyond: 10 Key Themes
Housing, the 2015 General Election and Beyond: 10 Key ThemesHousing, the 2015 General Election and Beyond: 10 Key Themes
Housing, the 2015 General Election and Beyond: 10 Key ThemesIpsos UK
 
Competency-Based Education Step-by-Step Guide
Competency-Based Education Step-by-Step GuideCompetency-Based Education Step-by-Step Guide
Competency-Based Education Step-by-Step GuideWonderlic
 
Adversarial Learning_Rupam Bhattacharya
Adversarial Learning_Rupam BhattacharyaAdversarial Learning_Rupam Bhattacharya
Adversarial Learning_Rupam BhattacharyaRupam Bhattacharya
 
Accelerating Impact: Exploring Best Practices, Challenges, and Innovations in...
Accelerating Impact: Exploring Best Practices, Challenges, and Innovations in...Accelerating Impact: Exploring Best Practices, Challenges, and Innovations in...
Accelerating Impact: Exploring Best Practices, Challenges, and Innovations in...The Rockefeller Foundation
 
Startup Highway Workshop
Startup Highway WorkshopStartup Highway Workshop
Startup Highway WorkshopPayPal
 

Viewers also liked (16)

Don't Stop Believing Says Michelle Lin
Don't Stop Believing Says Michelle LinDon't Stop Believing Says Michelle Lin
Don't Stop Believing Says Michelle Lin
 
Brain NECSTwork - FPGA because
Brain NECSTwork - FPGA becauseBrain NECSTwork - FPGA because
Brain NECSTwork - FPGA because
 
Itil
ItilItil
Itil
 
Using Social Media2
Using Social Media2Using Social Media2
Using Social Media2
 
Representing Chemicals Digitally: An overview of Cheminformatics
Representing Chemicals Digitally: An overview of CheminformaticsRepresenting Chemicals Digitally: An overview of Cheminformatics
Representing Chemicals Digitally: An overview of Cheminformatics
 
The Trouble With Tribbles: How LOLcats Ate Our Engagement
The Trouble With Tribbles: How LOLcats Ate Our EngagementThe Trouble With Tribbles: How LOLcats Ate Our Engagement
The Trouble With Tribbles: How LOLcats Ate Our Engagement
 
A importância da colaboração na Web 2.0
A importância da colaboração na Web 2.0A importância da colaboração na Web 2.0
A importância da colaboração na Web 2.0
 
Everyone has a story
Everyone has a storyEveryone has a story
Everyone has a story
 
Content is Currency - FinanceConnect 2015
Content is Currency - FinanceConnect 2015Content is Currency - FinanceConnect 2015
Content is Currency - FinanceConnect 2015
 
Moving Beyond The Newsletter: Using Technology To Meet Parents Where They Are
Moving Beyond The Newsletter: Using Technology To Meet Parents Where They AreMoving Beyond The Newsletter: Using Technology To Meet Parents Where They Are
Moving Beyond The Newsletter: Using Technology To Meet Parents Where They Are
 
Housing, the 2015 General Election and Beyond: 10 Key Themes
Housing, the 2015 General Election and Beyond: 10 Key ThemesHousing, the 2015 General Election and Beyond: 10 Key Themes
Housing, the 2015 General Election and Beyond: 10 Key Themes
 
Crucigrama
Crucigrama Crucigrama
Crucigrama
 
Competency-Based Education Step-by-Step Guide
Competency-Based Education Step-by-Step GuideCompetency-Based Education Step-by-Step Guide
Competency-Based Education Step-by-Step Guide
 
Adversarial Learning_Rupam Bhattacharya
Adversarial Learning_Rupam BhattacharyaAdversarial Learning_Rupam Bhattacharya
Adversarial Learning_Rupam Bhattacharya
 
Accelerating Impact: Exploring Best Practices, Challenges, and Innovations in...
Accelerating Impact: Exploring Best Practices, Challenges, and Innovations in...Accelerating Impact: Exploring Best Practices, Challenges, and Innovations in...
Accelerating Impact: Exploring Best Practices, Challenges, and Innovations in...
 
Startup Highway Workshop
Startup Highway WorkshopStartup Highway Workshop
Startup Highway Workshop
 

Similar to Droidcon Paris: The new Android SDK

java and javascript api dev guide
java and javascript api dev guidejava and javascript api dev guide
java and javascript api dev guideZenita Smythe
 
Monetize with PayPal X Payments Platform
Monetize with PayPal X Payments PlatformMonetize with PayPal X Payments Platform
Monetize with PayPal X Payments Platformguest72b121
 
Social Gold in-Flash Webinar Jan 2010
Social Gold in-Flash Webinar Jan 2010Social Gold in-Flash Webinar Jan 2010
Social Gold in-Flash Webinar Jan 2010Social Gold
 
Social Gold In-Flash Payments Webinar
Social Gold In-Flash Payments WebinarSocial Gold In-Flash Payments Webinar
Social Gold In-Flash Payments WebinarSocial Gold
 
One Gateway for All Kinds of Payments—the Payflow Integration
One Gateway for All Kinds of Payments—the Payflow IntegrationOne Gateway for All Kinds of Payments—the Payflow Integration
One Gateway for All Kinds of Payments—the Payflow IntegrationPayPalX Developer Network
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsJim Jeffers
 
How to run a Bitcoin or altcoin cryptocurrency faucet on WordPress
How to run a Bitcoin or altcoin cryptocurrency faucet on WordPressHow to run a Bitcoin or altcoin cryptocurrency faucet on WordPress
How to run a Bitcoin or altcoin cryptocurrency faucet on WordPressdashed-slug.net
 
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...Amazon Web Services
 
(MBL301) Beyond the App - Extend Your User Experience with Mobile Push Notifi...
(MBL301) Beyond the App - Extend Your User Experience with Mobile Push Notifi...(MBL301) Beyond the App - Extend Your User Experience with Mobile Push Notifi...
(MBL301) Beyond the App - Extend Your User Experience with Mobile Push Notifi...Amazon Web Services
 
The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016Robert Nyman
 
The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016Robert Nyman
 
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...Amazon Web Services
 
How to stop being Rails Developer
How to stop being Rails DeveloperHow to stop being Rails Developer
How to stop being Rails DeveloperIvan Nemytchenko
 
Get Paid! Plugins, Gateways, BitCoin: WordPress Ecommerce Project Management
Get Paid! Plugins, Gateways, BitCoin: WordPress Ecommerce Project ManagementGet Paid! Plugins, Gateways, BitCoin: WordPress Ecommerce Project Management
Get Paid! Plugins, Gateways, BitCoin: WordPress Ecommerce Project ManagementPeter Walker
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraWebExpo
 
Long running processes in DDD
Long running processes in DDDLong running processes in DDD
Long running processes in DDDBernd Ruecker
 
How React Native Appium and me made each other shine
How React Native Appium and me made each other shineHow React Native Appium and me made each other shine
How React Native Appium and me made each other shineWim Selles
 
Get Paid presentation_20190123
Get Paid presentation_20190123Get Paid presentation_20190123
Get Paid presentation_20190123Peter Walker
 

Similar to Droidcon Paris: The new Android SDK (20)

Coding to the MasterCard OpenAPIs
Coding to the MasterCard OpenAPIsCoding to the MasterCard OpenAPIs
Coding to the MasterCard OpenAPIs
 
java and javascript api dev guide
java and javascript api dev guidejava and javascript api dev guide
java and javascript api dev guide
 
Monetize with PayPal X Payments Platform
Monetize with PayPal X Payments PlatformMonetize with PayPal X Payments Platform
Monetize with PayPal X Payments Platform
 
Social Gold in-Flash Webinar Jan 2010
Social Gold in-Flash Webinar Jan 2010Social Gold in-Flash Webinar Jan 2010
Social Gold in-Flash Webinar Jan 2010
 
Social Gold In-Flash Payments Webinar
Social Gold In-Flash Payments WebinarSocial Gold In-Flash Payments Webinar
Social Gold In-Flash Payments Webinar
 
One Gateway for All Kinds of Payments—the Payflow Integration
One Gateway for All Kinds of Payments—the Payflow IntegrationOne Gateway for All Kinds of Payments—the Payflow Integration
One Gateway for All Kinds of Payments—the Payflow Integration
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
 
How to run a Bitcoin or altcoin cryptocurrency faucet on WordPress
How to run a Bitcoin or altcoin cryptocurrency faucet on WordPressHow to run a Bitcoin or altcoin cryptocurrency faucet on WordPress
How to run a Bitcoin or altcoin cryptocurrency faucet on WordPress
 
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
 
(MBL301) Beyond the App - Extend Your User Experience with Mobile Push Notifi...
(MBL301) Beyond the App - Extend Your User Experience with Mobile Push Notifi...(MBL301) Beyond the App - Extend Your User Experience with Mobile Push Notifi...
(MBL301) Beyond the App - Extend Your User Experience with Mobile Push Notifi...
 
The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016
 
The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016
 
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
Managing Identity and Securing Your Mobile and Web Applications with Amazon C...
 
How to stop being Rails Developer
How to stop being Rails DeveloperHow to stop being Rails Developer
How to stop being Rails Developer
 
Get Paid! Plugins, Gateways, BitCoin: WordPress Ecommerce Project Management
Get Paid! Plugins, Gateways, BitCoin: WordPress Ecommerce Project ManagementGet Paid! Plugins, Gateways, BitCoin: WordPress Ecommerce Project Management
Get Paid! Plugins, Gateways, BitCoin: WordPress Ecommerce Project Management
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
 
- Webexpo 2010
- Webexpo 2010- Webexpo 2010
- Webexpo 2010
 
Long running processes in DDD
Long running processes in DDDLong running processes in DDD
Long running processes in DDD
 
How React Native Appium and me made each other shine
How React Native Appium and me made each other shineHow React Native Appium and me made each other shine
How React Native Appium and me made each other shine
 
Get Paid presentation_20190123
Get Paid presentation_20190123Get Paid presentation_20190123
Get Paid presentation_20190123
 

More from PayPal

PayPal's Private Cloud @ Scale
PayPal's Private Cloud @ ScalePayPal's Private Cloud @ Scale
PayPal's Private Cloud @ ScalePayPal
 
Kraken Front-Trends
Kraken Front-TrendsKraken Front-Trends
Kraken Front-TrendsPayPal
 
Kraken
KrakenKraken
KrakenPayPal
 
Death To Passwords Droid Edition
Death To Passwords Droid EditionDeath To Passwords Droid Edition
Death To Passwords Droid EditionPayPal
 
Future Of Payments
Future Of PaymentsFuture Of Payments
Future Of PaymentsPayPal
 
The web can do that better - My adventure with HTML5 Vide, WebRTC and Shared ...
The web can do that better - My adventure with HTML5 Vide, WebRTC and Shared ...The web can do that better - My adventure with HTML5 Vide, WebRTC and Shared ...
The web can do that better - My adventure with HTML5 Vide, WebRTC and Shared ...PayPal
 
Death To Passwords
Death To PasswordsDeath To Passwords
Death To PasswordsPayPal
 
KrakenJS
KrakenJSKrakenJS
KrakenJSPayPal
 
Battle Hack London Intro
Battle Hack London IntroBattle Hack London Intro
Battle Hack London IntroPayPal
 
Authentication for Droids
Authentication for DroidsAuthentication for Droids
Authentication for DroidsPayPal
 
Concrete indentity really getting to know your users
Concrete indentity   really getting to know your usersConcrete indentity   really getting to know your users
Concrete indentity really getting to know your usersPayPal
 
Online Identity: Getting to know your users
Online Identity: Getting to know your usersOnline Identity: Getting to know your users
Online Identity: Getting to know your usersPayPal
 
Mobile payments at Droidcon Eastern Europe
Mobile payments at Droidcon Eastern EuropeMobile payments at Droidcon Eastern Europe
Mobile payments at Droidcon Eastern EuropePayPal
 
Reinvigorating Stagnant Innovation Through Your Developer Network
Reinvigorating Stagnant Innovation Through Your Developer NetworkReinvigorating Stagnant Innovation Through Your Developer Network
Reinvigorating Stagnant Innovation Through Your Developer NetworkPayPal
 
Open Identity - getting to know your users
Open Identity - getting to know your usersOpen Identity - getting to know your users
Open Identity - getting to know your usersPayPal
 
The Profitable Startup
The Profitable StartupThe Profitable Startup
The Profitable StartupPayPal
 
Berlin Battle hack presentation
Berlin Battle hack presentationBerlin Battle hack presentation
Berlin Battle hack presentationPayPal
 
From Good To Great
From Good To GreatFrom Good To Great
From Good To GreatPayPal
 
Hack & Tell
Hack & TellHack & Tell
Hack & TellPayPal
 
Payments for the REST of us
Payments for the REST of usPayments for the REST of us
Payments for the REST of usPayPal
 

More from PayPal (20)

PayPal's Private Cloud @ Scale
PayPal's Private Cloud @ ScalePayPal's Private Cloud @ Scale
PayPal's Private Cloud @ Scale
 
Kraken Front-Trends
Kraken Front-TrendsKraken Front-Trends
Kraken Front-Trends
 
Kraken
KrakenKraken
Kraken
 
Death To Passwords Droid Edition
Death To Passwords Droid EditionDeath To Passwords Droid Edition
Death To Passwords Droid Edition
 
Future Of Payments
Future Of PaymentsFuture Of Payments
Future Of Payments
 
The web can do that better - My adventure with HTML5 Vide, WebRTC and Shared ...
The web can do that better - My adventure with HTML5 Vide, WebRTC and Shared ...The web can do that better - My adventure with HTML5 Vide, WebRTC and Shared ...
The web can do that better - My adventure with HTML5 Vide, WebRTC and Shared ...
 
Death To Passwords
Death To PasswordsDeath To Passwords
Death To Passwords
 
KrakenJS
KrakenJSKrakenJS
KrakenJS
 
Battle Hack London Intro
Battle Hack London IntroBattle Hack London Intro
Battle Hack London Intro
 
Authentication for Droids
Authentication for DroidsAuthentication for Droids
Authentication for Droids
 
Concrete indentity really getting to know your users
Concrete indentity   really getting to know your usersConcrete indentity   really getting to know your users
Concrete indentity really getting to know your users
 
Online Identity: Getting to know your users
Online Identity: Getting to know your usersOnline Identity: Getting to know your users
Online Identity: Getting to know your users
 
Mobile payments at Droidcon Eastern Europe
Mobile payments at Droidcon Eastern EuropeMobile payments at Droidcon Eastern Europe
Mobile payments at Droidcon Eastern Europe
 
Reinvigorating Stagnant Innovation Through Your Developer Network
Reinvigorating Stagnant Innovation Through Your Developer NetworkReinvigorating Stagnant Innovation Through Your Developer Network
Reinvigorating Stagnant Innovation Through Your Developer Network
 
Open Identity - getting to know your users
Open Identity - getting to know your usersOpen Identity - getting to know your users
Open Identity - getting to know your users
 
The Profitable Startup
The Profitable StartupThe Profitable Startup
The Profitable Startup
 
Berlin Battle hack presentation
Berlin Battle hack presentationBerlin Battle hack presentation
Berlin Battle hack presentation
 
From Good To Great
From Good To GreatFrom Good To Great
From Good To Great
 
Hack & Tell
Hack & TellHack & Tell
Hack & Tell
 
Payments for the REST of us
Payments for the REST of usPayments for the REST of us
Payments for the REST of us
 

Recently uploaded

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
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 

Recently uploaded (20)

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
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
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...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 

Droidcon Paris: The new Android SDK