SlideShare a Scribd company logo
1 of 72
Download to read offline
Write once, ship multiple
times
ŽELJKO PLESAC
Independent design & development agency
107 people in 3 offices
18 Android engineers
WHITE LABEL SYSTEMS
A white label product is a product or
service produced by one company
(the producer) that other companies
(the marketers) rebrand to make it
appear as if they had made it.
- WIKIPEDIA
Provides your brand with a refined product.
Outsourcing the development to a trusted thirty-party company.
Saving time and money.
Lack of control.
Lack of customisation.
Unified product vision.
HOW TO BUILD WHITE LABEL APPS?
NO.
Carefully
designing the
system.
PREREQUISITES
THOU SHALL NOT USE FAT CLIENTS.
Fat clients
• not customisable on the fly
• new app version for each new
feature
• prone to errors
• hard to maintain
MOST OF THE SYSTEMS FAIL ON THIS
POINT.
SYSTEM ARCHITECTURE
Flavours.
Modules.
FLAVOUR ARCHITECTURE
Main flavour.
Product flavours.
MAIN FLAVOUR
• default product
• used only for demo purposes
• contains shared code
• uses default set of resources
• can be customised by configuration file
FLAVOURS
• each flavour is an application
• holds product specific resources
• contains only product specific code
• should be as minimal as possible
ADVANTAGES
Easy to maintain and develop.
Easy to configure.
Resource and code sharing between main flavour and product flavour.
DISADVANTAGES
Customisation is extremely hard.
Exponential increase of files and resources.
MODULE ARCHITECTURE
Main module.
Product module.
MAIN MODULE
• set of core functionalities
• default resources
• can be configured by configuration file
PRODUCT MODULES
• each module is one app
• product specific code and resources
ADVANTAGES
Easy to customise.
Apps are isolated.
Business logic can be product specific.
DISADVANTAGES
Hard to maintain.
Losing focus.
CUSTOMIZE APP BEHAVIOUR
BUILD CONFIG FILE
Customise constant values between the apps.
productFlavors {
white {
dimension ‘product’
applicationId ‘com.infinum.white’
buildConfigField STRING, GOOGLE_ANALYTICS_ID, ‘”analyticsIdForWhite”’
buildConfigField STRING, API_URL, ‘”www.api.co/white/v1”’
manifestPlaceholders = [urlScheme: “white”]
}
blue {
dimension ‘product’
applicationId ‘com.infinum.blue’
buildConfigField STRING, GOOGLE_ANALYTICS_ID, ‘”analyticsIdForBlue”’
buildConfigField STRING, API_URL, ‘”www.api.co/blue/v1”’
manifestPlaceholders = [urlScheme: “blue”]
}
}
HostModule.setEndpoint(BuildConfig.API_URL);
AnalyticsModule.setGoogleAnalyticsId(BuildConfig.
GOOGLE_ANALYTICS_ID);
BONUS - CUSTOMISE RESOURCES
applicationVariants.all {

resValue XML_STRING, SEARCH_AUTHORITY, applicationId + '.providers.SearchSuggestionsProvider'

}
CONFIGURATION FILE
Locally cached or obtained from the API.
More flexible that BuildConfig file.
Descriptive method naming.
CUSTOMISE APPLICATION ON THE FLY
• enable/disable features
• data flow
• screen flow
public interface AppConfig {
boolean isSocialLoginEnabled();
List<MenuItem> getLoggedInUserNavigationMenu();
}
public class WhiteConfiguration implements AppConfig {
private static final List<MenuItem> LOGGED_IN_USER_NAVIGATION_MENU = Collections.unmodifiableList(Arrays.asList(
new MenuItem(R.drawable.ic_gamepad, R.string.home),
new MenuItem(R.drawable.ic_settings, R.string.settings),
new MenuItem(R.drawable.ic_settings, R.string.info)
));
@Override
public boolean isSocialLoginEnabled() {
return !BuildConfig.DEBUG || BuildConfig.APPLICATION_ID.endsWith(STAGING_APP_ID);
}
@Override
public List<MenuItem> getLoggedInUserNavigationMenu() {
return LOGGED_IN_USER_NAVIGATION_MENU;
}
}
DESCRIPTIVE METHODS
Method names should be descriptive and should not contain product names.
public interface AppConfig {
boolean isWhite();
boolean isBlue();
}
PROGRAM TO INTERFACES
INTERFACES
Extract functionalities.
Integrate with external dependencies.
Default or product specific implementation.
public interface ImageLoader {
void displayImage(ImageView imageView, @NonNull String imageUrl);
void displayImage(ImageView imageView, @NonNull File imageFile);
}
@Module
public class ProvidersModule {
@Provides
public ImageLoader provideImageLoader(ImageLoaderType type) {
switch(type){
case GLIDE:
return new GlideImageLoader();
default:
return new PicassoImageLoader();
}
}
provided with
configuration file
Include external dependencies only for specific product types.
whiteCompile 'com.github.bumptech.glide:glide:3.6.1'
blueCompile 'com.github.bumptech.glide:glide:3.5.0’
GROUP FUNCTIONALITIES IN
FEATURES
Features
Each functionality is a feature.
Can be enabled/disabled.
Can be customised.
Feature
Contains everything what’s needed
for their integration.
Opened or closed.
CUSTOMISATION EXAMPLES
Default resources + product specific resources.
Default resources + product specific resources.
Same key is needed.
Provide presenter implementation per product.
Provide presenter implementation per product.
DI has to be handled per product (no default option).
Interfaces, features and configuration.
Interfaces, features and configuration.
Provide default and custom configuration.
Interfaces, features and configuration.
Provide default and custom configuration.
WHAT?
Feature has a default navigation flow, but it has to be customised only for one
or two products.
public interface Navigation {
<T> void createTrip(FragmentActivity activity, int
createTripRequestCode, Map<String, T> params);
}
public interface NavigationBehaviour {
<T> void startCreateTripScreen(FragmentActivity activity, int createTripRequestCode, Map<String, T>
params);
}
public class NavigationManager implements Navigation {
private NavigationBehaviour navigationBehaviour;
public NavigationManager(NavigationBehaviour navigationBehaviour) {
this.navigationBehaviour = navigationBehaviour;
}
@Override
public <T> void createTrip(FragmentActivity activity, int createTripRequestCode, Map<String, T>
params) {
navigationBehaviour.startCreateTripScreen(activity, createTripRequestCode, params);
}
}
public class DefaultNavigationBehaviour implements NavigationBehaviour {
@Override
public <Parcelable> void startCreateTripScreen(FragmentActivity activity, int createTripRequestCode,
Map<String, Parcelable> params) {
Intent intent = CreateTripActivity.newIntent(activity, TripType.WALKING, recentStops);
activity.startActivityForResult(intent, createTripRequestCode);
}
}
public class BlueNavigationBehaviour implements NavigationBehaviour {
@Override
public <Parcelable> void startCreateTripScreen(FragmentActivity activity, int createTripRequestCode,
Map<String, Parcelable> params) {
Intent intent = PlanTripActivity.newIntent(activity, TripType.CAR, recentStops);
activity.startActivityForResult(intent, createTripRequestCode);
}
}
CUSTOMIZE EVERYTHING?
When too much customisation is needed.
Different product vision.
FLAVOUR MODULE
STAND ALONE
APPLICATION
ROUNDUP
Thin clients.
Architecture planning.
Offer limited customisation.
Leave the system.
Visit infinum.co or find us on social networks:
infinum.co infinumco infinumco infinum
Thank you!
ZELJKO.PLESAC@INFINUM.CO
@ZELJKOPLESAC

More Related Content

What's hot

Being Epic: Best Practices for Android Development
Being Epic: Best Practices for Android DevelopmentBeing Epic: Best Practices for Android Development
Being Epic: Best Practices for Android DevelopmentReto Meier
 
An api is not "yet another feature"
An api is not "yet another feature"An api is not "yet another feature"
An api is not "yet another feature"Shay Weiner
 
Evolve13 cq-commerce-framework
Evolve13 cq-commerce-frameworkEvolve13 cq-commerce-framework
Evolve13 cq-commerce-frameworkPaolo Mottadelli
 
Case study: integrating azure with google app engine
Case study: integrating azure with google app engine Case study: integrating azure with google app engine
Case study: integrating azure with google app engine Miguel Scotter
 
Material design basics
Material design basicsMaterial design basics
Material design basicsJorge Barroso
 
AEM 6.0 Touch-optimized UI
AEM 6.0 Touch-optimized UIAEM 6.0 Touch-optimized UI
AEM 6.0 Touch-optimized UIGilles Knobloch
 
Developing Custom Controls with UI5 (OpenUI5 video lecture)
Developing Custom Controls with UI5 (OpenUI5 video lecture)Developing Custom Controls with UI5 (OpenUI5 video lecture)
Developing Custom Controls with UI5 (OpenUI5 video lecture)Michael Graf
 
Hacking the Explored App by Adding Custom Code (UI5con 2016)
Hacking the Explored App by Adding Custom Code (UI5con 2016)Hacking the Explored App by Adding Custom Code (UI5con 2016)
Hacking the Explored App by Adding Custom Code (UI5con 2016)Nabi Zamani
 
Selenium Based Visual Test Automation
Selenium Based Visual Test AutomationSelenium Based Visual Test Automation
Selenium Based Visual Test Automationadamcarmi
 

What's hot (12)

Being Epic: Best Practices for Android Development
Being Epic: Best Practices for Android DevelopmentBeing Epic: Best Practices for Android Development
Being Epic: Best Practices for Android Development
 
An api is not "yet another feature"
An api is not "yet another feature"An api is not "yet another feature"
An api is not "yet another feature"
 
What is java fx?
What is java fx?What is java fx?
What is java fx?
 
Evolve13 cq-commerce-framework
Evolve13 cq-commerce-frameworkEvolve13 cq-commerce-framework
Evolve13 cq-commerce-framework
 
Material Design Android
Material Design AndroidMaterial Design Android
Material Design Android
 
Case study: integrating azure with google app engine
Case study: integrating azure with google app engine Case study: integrating azure with google app engine
Case study: integrating azure with google app engine
 
Material design basics
Material design basicsMaterial design basics
Material design basics
 
AEM 6.0 Touch-optimized UI
AEM 6.0 Touch-optimized UIAEM 6.0 Touch-optimized UI
AEM 6.0 Touch-optimized UI
 
Developing Custom Controls with UI5 (OpenUI5 video lecture)
Developing Custom Controls with UI5 (OpenUI5 video lecture)Developing Custom Controls with UI5 (OpenUI5 video lecture)
Developing Custom Controls with UI5 (OpenUI5 video lecture)
 
Hacking the Explored App by Adding Custom Code (UI5con 2016)
Hacking the Explored App by Adding Custom Code (UI5con 2016)Hacking the Explored App by Adding Custom Code (UI5con 2016)
Hacking the Explored App by Adding Custom Code (UI5con 2016)
 
DEEPAK RAWAT
DEEPAK RAWATDEEPAK RAWAT
DEEPAK RAWAT
 
Selenium Based Visual Test Automation
Selenium Based Visual Test AutomationSelenium Based Visual Test Automation
Selenium Based Visual Test Automation
 

Similar to Write once, ship multiple times

Better User Experience with .NET
Better User Experience with .NETBetter User Experience with .NET
Better User Experience with .NETPeter Gfader
 
Justinmind prototyping: Interactive Requirements for your Software Developmen...
Justinmind prototyping: Interactive Requirements for your Software Developmen...Justinmind prototyping: Interactive Requirements for your Software Developmen...
Justinmind prototyping: Interactive Requirements for your Software Developmen...justinmind
 
VS Code and Modern Development Environment Preview
VS Code and Modern Development Environment PreviewVS Code and Modern Development Environment Preview
VS Code and Modern Development Environment PreviewRoberto Stefanetti
 
Use AppDynamics SDK to Integrate with your Applications - AppSphere16
Use AppDynamics SDK to Integrate with your Applications - AppSphere16Use AppDynamics SDK to Integrate with your Applications - AppSphere16
Use AppDynamics SDK to Integrate with your Applications - AppSphere16AppDynamics
 
IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBIZZ
 
apidays LIVE New York 2021 - Docs Driven API Development by Rahul Dighe, Paypal
apidays LIVE New York 2021 - Docs Driven API Development by Rahul Dighe, Paypalapidays LIVE New York 2021 - Docs Driven API Development by Rahul Dighe, Paypal
apidays LIVE New York 2021 - Docs Driven API Development by Rahul Dighe, Paypalapidays
 
Leaner and Smarter: How Enterprises Can Develop Better Digital Products (v2)
Leaner and Smarter: How Enterprises Can Develop Better Digital Products (v2)Leaner and Smarter: How Enterprises Can Develop Better Digital Products (v2)
Leaner and Smarter: How Enterprises Can Develop Better Digital Products (v2)Natalie Hollier
 
Fundamentals of Product Definition Process - MRD PRD FRD
Fundamentals of Product Definition Process - MRD PRD FRDFundamentals of Product Definition Process - MRD PRD FRD
Fundamentals of Product Definition Process - MRD PRD FRDLeon Kotovich
 
Building Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaBuilding Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaNoam Kfir
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryOptimizely
 
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the CloudWSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the CloudWSO2
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator PresentationAaron Saunders
 
Feature flag launchdarkly
Feature flag launchdarklyFeature flag launchdarkly
Feature flag launchdarklySandeep Soni
 
Managing Internal, Private External, and Open Developer Ecosystems
Managing Internal, Private External, and Open Developer EcosystemsManaging Internal, Private External, and Open Developer Ecosystems
Managing Internal, Private External, and Open Developer EcosystemsLarry McDonough
 
Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...
Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...
Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...Optimizely
 
Do You Enjoy Espresso in Android App Testing?
Do You Enjoy Espresso in Android App Testing?Do You Enjoy Espresso in Android App Testing?
Do You Enjoy Espresso in Android App Testing?Bitbar
 
James Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 PatternsJames Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 Patternsakqaanoraks
 
A Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureA Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureApplitools
 

Similar to Write once, ship multiple times (20)

Better User Experience with .NET
Better User Experience with .NETBetter User Experience with .NET
Better User Experience with .NET
 
Justinmind prototyping: Interactive Requirements for your Software Developmen...
Justinmind prototyping: Interactive Requirements for your Software Developmen...Justinmind prototyping: Interactive Requirements for your Software Developmen...
Justinmind prototyping: Interactive Requirements for your Software Developmen...
 
VS Code and Modern Development Environment Preview
VS Code and Modern Development Environment PreviewVS Code and Modern Development Environment Preview
VS Code and Modern Development Environment Preview
 
Use AppDynamics SDK to Integrate with your Applications - AppSphere16
Use AppDynamics SDK to Integrate with your Applications - AppSphere16Use AppDynamics SDK to Integrate with your Applications - AppSphere16
Use AppDynamics SDK to Integrate with your Applications - AppSphere16
 
IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with Worklight
 
apidays LIVE New York 2021 - Docs Driven API Development by Rahul Dighe, Paypal
apidays LIVE New York 2021 - Docs Driven API Development by Rahul Dighe, Paypalapidays LIVE New York 2021 - Docs Driven API Development by Rahul Dighe, Paypal
apidays LIVE New York 2021 - Docs Driven API Development by Rahul Dighe, Paypal
 
Leaner and Smarter: How Enterprises Can Develop Better Digital Products (v2)
Leaner and Smarter: How Enterprises Can Develop Better Digital Products (v2)Leaner and Smarter: How Enterprises Can Develop Better Digital Products (v2)
Leaner and Smarter: How Enterprises Can Develop Better Digital Products (v2)
 
Fundamentals of Product Definition Process - MRD PRD FRD
Fundamentals of Product Definition Process - MRD PRD FRDFundamentals of Product Definition Process - MRD PRD FRD
Fundamentals of Product Definition Process - MRD PRD FRD
 
Building Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaBuilding Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using Cordova
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature Delivery
 
Automation for the Humans
Automation for the HumansAutomation for the Humans
Automation for the Humans
 
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the CloudWSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
WSO2Con US 2013 - Keynote: Developing Enterprise Apps In the Cloud
 
Open event presentation.3 2
Open event presentation.3 2Open event presentation.3 2
Open event presentation.3 2
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator Presentation
 
Feature flag launchdarkly
Feature flag launchdarklyFeature flag launchdarkly
Feature flag launchdarkly
 
Managing Internal, Private External, and Open Developer Ecosystems
Managing Internal, Private External, and Open Developer EcosystemsManaging Internal, Private External, and Open Developer Ecosystems
Managing Internal, Private External, and Open Developer Ecosystems
 
Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...
Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...
Test & Learn: Building & Deploying Resilient Products - How Feature Flags & O...
 
Do You Enjoy Espresso in Android App Testing?
Do You Enjoy Espresso in Android App Testing?Do You Enjoy Espresso in Android App Testing?
Do You Enjoy Espresso in Android App Testing?
 
James Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 PatternsJames Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 Patterns
 
A Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureA Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the Future
 

More from Željko Plesac

Crash wars - The handling awakens v3.0
Crash wars - The handling awakens v3.0Crash wars - The handling awakens v3.0
Crash wars - The handling awakens v3.0Željko Plesac
 
Crash wars - The handling awakens
Crash wars - The handling awakensCrash wars - The handling awakens
Crash wars - The handling awakensŽeljko Plesac
 
Crash Wars - The handling awakens
Crash Wars  - The handling awakensCrash Wars  - The handling awakens
Crash Wars - The handling awakensŽeljko Plesac
 
Android tips and tricks
Android tips and tricksAndroid tips and tricks
Android tips and tricksŽeljko Plesac
 

More from Željko Plesac (7)

What the hype
What the hypeWhat the hype
What the hype
 
Crash wars - The handling awakens v3.0
Crash wars - The handling awakens v3.0Crash wars - The handling awakens v3.0
Crash wars - The handling awakens v3.0
 
Crash wars - The handling awakens
Crash wars - The handling awakensCrash wars - The handling awakens
Crash wars - The handling awakens
 
Crash Wars - The handling awakens
Crash Wars  - The handling awakensCrash Wars  - The handling awakens
Crash Wars - The handling awakens
 
Android Lollipop
Android LollipopAndroid Lollipop
Android Lollipop
 
Android tips and tricks
Android tips and tricksAndroid tips and tricks
Android tips and tricks
 
Android studio
Android studioAndroid studio
Android studio
 

Recently uploaded

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 

Recently uploaded (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 

Write once, ship multiple times