SlideShare a Scribd company logo
1 of 14
KEEP YOUR ARMS AND
LEGS INSIDE THE MANY
PLATFORMS: NATIVE CODE
EVERYWHERE
int main()
I AM JIM BORDEN
Software Engineer @ Couchbase, Inc.
(Previously Sotsu, Inc.)
You can find me (anywhere) at:
@borrrden
1
ARCHITECTURAL TOUR
Why things are the way that they
are
BUT, BUT. . .WHY?
▪ Small Team (4 people)
▪ Many platforms (6 platforms)
▪ Smaller QE (2 people shared with other
teams)
▪ Need to share as much source as possible
SO WHAT WERE WE DOING BEFORE?
▪ Everything above the data file level was per
platform
▪ Raw sqlite3 calls from each platform
▪ If one platform changed, there is a good
chance others would not notice
HOW IS THIS DIFFERENT?
▪ Everything is hidden behind an abstract
interface of operations
▪ Work is broken into logical units (open, close,
query, etc)
▪ Per platform logic very light (currently
Objective-C ~3000 LOC)
WHAT ABOUT ANDROID?
▪ Seven total distinct architectures
▪ Need to compile native elements for each
one the product supports
▪ What exactly is the NDK?
BUT WAIT, ISN’T MAINTAINING ALL THIS NATIVE CODE
HARD?
▪ Sort of, but CMake is here to help!
▪ CMake has tooling for every platform and
architecture we deploy to
▪ Let’s see an example build (OS X x64 and
Android x86 armv7 arm64)
3
MAKING SURE EVERYTHING
WORKS
BUT WE ONLY HAVE 2 QE ENGINEERS
▪ Things need to be automated as much as
possible
▪ Push to core triggers a native build and test
run
▪ A successful native build triggers a bindings
build and test run
▪ A successful bindings build triggers a
Couchbase Lite build and test run (TODO)
I’LL TAKE YOU ON THE TOUR
▪ Take a look at our internal Jenkins
▪ 8 powerful machines split into dozens of VMs
with dedicated RAM / CPU
▪ Coordinating different machines for different
purposes
Thanks!
ANY QUESTIONS?
You can find me at:
@borrrden
jim.borden@couchbase.com
CREDITS
Special thanks to all the people who made and released these awesome
resources for free:
▪ Presentation template by SlidesCarnival
▪ Photographs by Unsplash

More Related Content

Viewers also liked

Curiosity Bits Tutorial: Mining Twitter User Profile on Python V2
Curiosity Bits Tutorial: Mining Twitter User Profile on Python V2Curiosity Bits Tutorial: Mining Twitter User Profile on Python V2
Curiosity Bits Tutorial: Mining Twitter User Profile on Python V2Weiai Wayne Xu
 
SQLite: Light, Open Source Relational Database Management System
SQLite: Light, Open Source Relational Database Management SystemSQLite: Light, Open Source Relational Database Management System
SQLite: Light, Open Source Relational Database Management SystemTanner Jessel
 
Responsabilidad social empresarial y profesional
Responsabilidad social empresarial y profesionalResponsabilidad social empresarial y profesional
Responsabilidad social empresarial y profesionalhlaiton
 
Cultura consumista
Cultura consumistaCultura consumista
Cultura consumistaSad Pretty
 
Nuestros primeros tiempos en el ifd nº 20
Nuestros primeros tiempos en el ifd nº 20Nuestros primeros tiempos en el ifd nº 20
Nuestros primeros tiempos en el ifd nº 20Viviana Gabriela Niello
 
Elbilletede50[1].000 pesos
Elbilletede50[1].000 pesosElbilletede50[1].000 pesos
Elbilletede50[1].000 pesosSena Hola
 
trabajo de tecnologia
trabajo de tecnologiatrabajo de tecnologia
trabajo de tecnologiaKathe Ospina
 
Manual de Indesign cs2
Manual de Indesign cs2Manual de Indesign cs2
Manual de Indesign cs2gonzac123
 
250208 clasiftriangulos
250208 clasiftriangulos250208 clasiftriangulos
250208 clasiftriangulosomar garcia
 
Semana Santa 2010 - 03/04/10
Semana Santa 2010 - 03/04/10Semana Santa 2010 - 03/04/10
Semana Santa 2010 - 03/04/10juannabis
 
Liderazgo.BárbaraECCI
Liderazgo.BárbaraECCILiderazgo.BárbaraECCI
Liderazgo.BárbaraECCIdabafe131518
 
Contact sheet- Outside
Contact sheet- OutsideContact sheet- Outside
Contact sheet- OutsideEmilyRoseMedia
 
Elbilletede50[1].000 pesos
Elbilletede50[1].000 pesosElbilletede50[1].000 pesos
Elbilletede50[1].000 pesosSena Hola
 
Santa Semana 2009 - Día 08/04/09
Santa Semana 2009 - Día 08/04/09Santa Semana 2009 - Día 08/04/09
Santa Semana 2009 - Día 08/04/09juannabis
 

Viewers also liked (20)

Curiosity Bits Tutorial: Mining Twitter User Profile on Python V2
Curiosity Bits Tutorial: Mining Twitter User Profile on Python V2Curiosity Bits Tutorial: Mining Twitter User Profile on Python V2
Curiosity Bits Tutorial: Mining Twitter User Profile on Python V2
 
SQLite: Light, Open Source Relational Database Management System
SQLite: Light, Open Source Relational Database Management SystemSQLite: Light, Open Source Relational Database Management System
SQLite: Light, Open Source Relational Database Management System
 
Responsabilidad social empresarial y profesional
Responsabilidad social empresarial y profesionalResponsabilidad social empresarial y profesional
Responsabilidad social empresarial y profesional
 
Presentación1 de julian camilo 2
Presentación1 de julian camilo 2Presentación1 de julian camilo 2
Presentación1 de julian camilo 2
 
Cultura consumista
Cultura consumistaCultura consumista
Cultura consumista
 
Nuestros primeros tiempos en el ifd nº 20
Nuestros primeros tiempos en el ifd nº 20Nuestros primeros tiempos en el ifd nº 20
Nuestros primeros tiempos en el ifd nº 20
 
Elbilletede50[1].000 pesos
Elbilletede50[1].000 pesosElbilletede50[1].000 pesos
Elbilletede50[1].000 pesos
 
El exito
El exitoEl exito
El exito
 
trabajo de tecnologia
trabajo de tecnologiatrabajo de tecnologia
trabajo de tecnologia
 
Presentación1
Presentación1Presentación1
Presentación1
 
Manual de Indesign cs2
Manual de Indesign cs2Manual de Indesign cs2
Manual de Indesign cs2
 
250208 clasiftriangulos
250208 clasiftriangulos250208 clasiftriangulos
250208 clasiftriangulos
 
Semana Santa 2010 - 03/04/10
Semana Santa 2010 - 03/04/10Semana Santa 2010 - 03/04/10
Semana Santa 2010 - 03/04/10
 
Liderazgo.BárbaraECCI
Liderazgo.BárbaraECCILiderazgo.BárbaraECCI
Liderazgo.BárbaraECCI
 
Liderazgo
LiderazgoLiderazgo
Liderazgo
 
1ª reunión
1ª reunión1ª reunión
1ª reunión
 
Productos de otoño
Productos de otoñoProductos de otoño
Productos de otoño
 
Contact sheet- Outside
Contact sheet- OutsideContact sheet- Outside
Contact sheet- Outside
 
Elbilletede50[1].000 pesos
Elbilletede50[1].000 pesosElbilletede50[1].000 pesos
Elbilletede50[1].000 pesos
 
Santa Semana 2009 - Día 08/04/09
Santa Semana 2009 - Día 08/04/09Santa Semana 2009 - Día 08/04/09
Santa Semana 2009 - Día 08/04/09
 

Similar to Keep Your Arms and Legs Inside the Many Platforms: Native Code Everywhere

Exadata
ExadataExadata
Exadatatalek
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleJérôme Petazzoni
 
2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar seriesOpen Mainframe Project
 
One Shellcode to Rule Them All: Cross-Platform Exploitation
One Shellcode to Rule Them All: Cross-Platform ExploitationOne Shellcode to Rule Them All: Cross-Platform Exploitation
One Shellcode to Rule Them All: Cross-Platform ExploitationQuinn Wilton
 
Confrontation Pipeline and SCons
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SConsslantsixgames
 
Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Noam Gat
 
Icinga Camp Amsterdam - Icinga Director
Icinga Camp Amsterdam - Icinga DirectorIcinga Camp Amsterdam - Icinga Director
Icinga Camp Amsterdam - Icinga DirectorIcinga
 
MySQL 5.6 Performance
MySQL 5.6 PerformanceMySQL 5.6 Performance
MySQL 5.6 PerformanceMYXPLAIN
 
PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.DECK36
 
Containerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxContainerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxRavi Yadav
 
Open stack jobs avoiding the axe
Open stack jobs   avoiding the axeOpen stack jobs   avoiding the axe
Open stack jobs avoiding the axeJim Leitch
 
Icinga Camp San Diego 2016 - Icinga Director
Icinga Camp San Diego 2016 - Icinga DirectorIcinga Camp San Diego 2016 - Icinga Director
Icinga Camp San Diego 2016 - Icinga DirectorIcinga
 
All Your IOPS Are Belong To Us - A Pinteresting Case Study in MySQL Performan...
All Your IOPS Are Belong To Us - A Pinteresting Case Study in MySQL Performan...All Your IOPS Are Belong To Us - A Pinteresting Case Study in MySQL Performan...
All Your IOPS Are Belong To Us - A Pinteresting Case Study in MySQL Performan...Ernie Souhrada
 
Scale11x lxc talk
Scale11x lxc talkScale11x lxc talk
Scale11x lxc talkdotCloud
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Stuart Charlton
 
Icinga Camp Berlin 2017 - Icinga Director
Icinga Camp Berlin 2017 - Icinga DirectorIcinga Camp Berlin 2017 - Icinga Director
Icinga Camp Berlin 2017 - Icinga DirectorIcinga
 
inside-linux-kernel-rng-presentation-sept-13-2022.pdf
inside-linux-kernel-rng-presentation-sept-13-2022.pdfinside-linux-kernel-rng-presentation-sept-13-2022.pdf
inside-linux-kernel-rng-presentation-sept-13-2022.pdfxiso
 
Icinga Director
Icinga DirectorIcinga Director
Icinga DirectorIcinga
 
SequenceL gets rid of decades of programming baggage
SequenceL gets rid of decades of programming baggageSequenceL gets rid of decades of programming baggage
SequenceL gets rid of decades of programming baggageDoug Norton
 

Similar to Keep Your Arms and Legs Inside the Many Platforms: Native Code Everywhere (20)

Exadata
ExadataExadata
Exadata
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
 
2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series
 
One Shellcode to Rule Them All: Cross-Platform Exploitation
One Shellcode to Rule Them All: Cross-Platform ExploitationOne Shellcode to Rule Them All: Cross-Platform Exploitation
One Shellcode to Rule Them All: Cross-Platform Exploitation
 
Confrontation Pipeline and SCons
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SCons
 
Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)
 
Icinga Camp Amsterdam - Icinga Director
Icinga Camp Amsterdam - Icinga DirectorIcinga Camp Amsterdam - Icinga Director
Icinga Camp Amsterdam - Icinga Director
 
MySQL 5.6 Performance
MySQL 5.6 PerformanceMySQL 5.6 Performance
MySQL 5.6 Performance
 
PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.
 
Containerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxContainerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptx
 
Open stack jobs avoiding the axe
Open stack jobs   avoiding the axeOpen stack jobs   avoiding the axe
Open stack jobs avoiding the axe
 
Icinga Camp San Diego 2016 - Icinga Director
Icinga Camp San Diego 2016 - Icinga DirectorIcinga Camp San Diego 2016 - Icinga Director
Icinga Camp San Diego 2016 - Icinga Director
 
All Your IOPS Are Belong To Us - A Pinteresting Case Study in MySQL Performan...
All Your IOPS Are Belong To Us - A Pinteresting Case Study in MySQL Performan...All Your IOPS Are Belong To Us - A Pinteresting Case Study in MySQL Performan...
All Your IOPS Are Belong To Us - A Pinteresting Case Study in MySQL Performan...
 
Scale11x lxc talk
Scale11x lxc talkScale11x lxc talk
Scale11x lxc talk
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!
 
Icinga Camp Berlin 2017 - Icinga Director
Icinga Camp Berlin 2017 - Icinga DirectorIcinga Camp Berlin 2017 - Icinga Director
Icinga Camp Berlin 2017 - Icinga Director
 
Docker 101
Docker 101 Docker 101
Docker 101
 
inside-linux-kernel-rng-presentation-sept-13-2022.pdf
inside-linux-kernel-rng-presentation-sept-13-2022.pdfinside-linux-kernel-rng-presentation-sept-13-2022.pdf
inside-linux-kernel-rng-presentation-sept-13-2022.pdf
 
Icinga Director
Icinga DirectorIcinga Director
Icinga Director
 
SequenceL gets rid of decades of programming baggage
SequenceL gets rid of decades of programming baggageSequenceL gets rid of decades of programming baggage
SequenceL gets rid of decades of programming baggage
 

Recently uploaded

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
(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
 
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
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
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
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 

Recently uploaded (20)

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
(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...
 
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
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
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
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
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
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 

Keep Your Arms and Legs Inside the Many Platforms: Native Code Everywhere

  • 1. KEEP YOUR ARMS AND LEGS INSIDE THE MANY PLATFORMS: NATIVE CODE EVERYWHERE
  • 2. int main() I AM JIM BORDEN Software Engineer @ Couchbase, Inc. (Previously Sotsu, Inc.) You can find me (anywhere) at: @borrrden
  • 3. 1 ARCHITECTURAL TOUR Why things are the way that they are
  • 4.
  • 5. BUT, BUT. . .WHY? ▪ Small Team (4 people) ▪ Many platforms (6 platforms) ▪ Smaller QE (2 people shared with other teams) ▪ Need to share as much source as possible
  • 6. SO WHAT WERE WE DOING BEFORE? ▪ Everything above the data file level was per platform ▪ Raw sqlite3 calls from each platform ▪ If one platform changed, there is a good chance others would not notice
  • 7. HOW IS THIS DIFFERENT? ▪ Everything is hidden behind an abstract interface of operations ▪ Work is broken into logical units (open, close, query, etc) ▪ Per platform logic very light (currently Objective-C ~3000 LOC)
  • 8. WHAT ABOUT ANDROID? ▪ Seven total distinct architectures ▪ Need to compile native elements for each one the product supports ▪ What exactly is the NDK?
  • 9. BUT WAIT, ISN’T MAINTAINING ALL THIS NATIVE CODE HARD? ▪ Sort of, but CMake is here to help! ▪ CMake has tooling for every platform and architecture we deploy to ▪ Let’s see an example build (OS X x64 and Android x86 armv7 arm64)
  • 11. BUT WE ONLY HAVE 2 QE ENGINEERS ▪ Things need to be automated as much as possible ▪ Push to core triggers a native build and test run ▪ A successful native build triggers a bindings build and test run ▪ A successful bindings build triggers a Couchbase Lite build and test run (TODO)
  • 12. I’LL TAKE YOU ON THE TOUR ▪ Take a look at our internal Jenkins ▪ 8 powerful machines split into dozens of VMs with dedicated RAM / CPU ▪ Coordinating different machines for different purposes
  • 13. Thanks! ANY QUESTIONS? You can find me at: @borrrden jim.borden@couchbase.com
  • 14. CREDITS Special thanks to all the people who made and released these awesome resources for free: ▪ Presentation template by SlidesCarnival ▪ Photographs by Unsplash