SlideShare una empresa de Scribd logo
1 de 78
Descargar para leer sin conexión
Slaying bugs
w/ Gradle and Jenkins
David Kay
Wednesday, September 11, 13
Overview
• Gradle
• Jenkins
Wednesday, September 11, 13
Build Tools?
Wednesday, September 11, 13
Wednesday, September 11, 13
Wednesday, September 11, 13
Wednesday, September 11, 13
Wednesday, September 11, 13
Unless your name is John Carmack, you aren’t.
So what are we left with?
Wednesday, September 11, 13
Wednesday, September 11, 13
Wednesday, September 11, 13
WTF is ?
• New Build system
• Alternatives
• ant
• maven
• buck
Wednesday, September 11, 13
In other words...
Trust me,
Wednesday, September 11, 13
it’s awesome.
Wednesday, September 11, 13
Wednesday, September 11, 13
Vlad putin is not convinced
Build Tools
• ant
• maven
• buck
Wednesday, September 11, 13
Wednesday, September 11, 13
• Simple
• Mature
• Customizable
What’s Awesome:
Wednesday, September 11, 13
In other words, it’s like duct tape
Wednesday, September 11, 13
If you’re the kind of person to build a prom dress out of duct tape
Wednesday, September 11, 13
It’ll be a great fit
• Lots of work
• No dependency management
What Sucks:
Wednesday, September 11, 13
For me, too much work
Wednesday, September 11, 13
• Mature
• Comprehensive
• Dependency management
• Easy configuration
What’s Awesome:
Wednesday, September 11, 13
Wednesday, September 11, 13
• Massively complex
• Shitty integration with libproject / .aar
• Hard to fix
What Sucks:
Wednesday, September 11, 13
Buck
Wednesday, September 11, 13
Buck
What’s Awesome:
• SOOOO FAST
• Simple
• Easy to compartmentalize project
Wednesday, September 11, 13
Wednesday, September 11, 13
Buck
What Sucks:
• No dependency management
• No support for running tests on device
• Poor documentation
Wednesday, September 11, 13
And the winner is....
Wednesday, September 11, 13
And the winner is....
Wednesday, September 11, 13
HOV!
And the winner is....
Wednesday, September 11, 13
Basics
Wednesday, September 11, 13
Basics
• Built on Groovy
Wednesday, September 11, 13
Wednesday, September 11, 13
Wednesday, September 11, 13
Basics
• Built on Groovy
• gradle files are Groovy files
Wednesday, September 11, 13
So, uh, where were we...
Basics
• gradle files are Groovy files
def square(x) {
x * x
}
in your build file!
Wednesday, September 11, 13
Hello World
> gradle -q hello
Hello world!
task hello {
doLast {
println 'Hello world!'
}
}
build.gradle
how to run
Wednesday, September 11, 13
LAME
Wednesday, September 11, 13
Hello Java
> gradle assemble
apply plugin: 'java'
build.gradle
how to run
Wednesday, September 11, 13
Not Bad...
Wednesday, September 11, 13
Hello Android
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:0.5.6'
}
}
apply plugin: 'android'
android {
compileSdkVersion 17
}
build.gradle
> gradle assemble
how to run
Wednesday, September 11, 13
Alright!
Wednesday, September 11, 13
Hello Android
src/
main/
res/
value/
layout/
...
java/
com/
...
test/
res/
....
src/
....
Directory Structure
Wednesday, September 11, 13
Multi-Project
include ':HelloGradle', ':vendor:volley'
settings.gradle
project-root/
Wednesday, September 11, 13
Dependencies
...
dependencies {
// from a local jar
compile files('jackson.jar')
// from maven central/etc
compile 'com.jayway.android.robotium:robotium-solo:4.2'
// from a library project
compile project(':vendor:volley')
}
...
build.gradle
Wednesday, September 11, 13
Test Tools
• Unit tests: Robolectric
• Integration/end-to-end: Robotium
Wednesday, September 11, 13
?Wednesday, September 11, 13
Wednesday, September 11, 13
?Wednesday, September 11, 13
Wednesday, September 11, 13
OKOK
How do we RUN the tests?
Wednesday, September 11, 13
Hello Android
> gradle assemble
# compile debug/release/test
> gradle check
# run all tests
how to run
Wednesday, September 11, 13
Wednesday, September 11, 13
Nice!
But how do we AUTOMATE it?
Wednesday, September 11, 13
Jenkins!!!
Wednesday, September 11, 13
like a certain other butler
Jenkins!!!
• Rock-solid
• Plugins
• Hackable/extensible
What’s Awesome:
Wednesday, September 11, 13
like a certain other butler
Wednesday, September 11, 13
Won’t tell you stories about Burmese jewel bandits.
...but at least he won’t walk out on you to prove a point.
Jenkins!!!
• First-time config
• Android Emulator :(
• Resource-intensive
What Sucks:
Wednesday, September 11, 13
Build System
Build Slaves
Wednesday, September 11, 13
Build System Ouput
S3 Bucket
Build Errors
Dev Team
Beta Testers
Wednesday, September 11, 13
Wednesday, September 11, 13
Pitfalls
• Headless Emulator
• Android Emulator / Xvnc delay
• -no-audio
Wednesday, September 11, 13
Wednesday, September 11, 13
Comprende!
Wednesday, September 11, 13
Comprende!
WTF?
Wednesday, September 11, 13
“How a programmer reads your resume” - Steve Hanov
http://stevehanov.ca/blog/resume_comic.png
Wednesday, September 11, 13
CheckStyle
Wednesday, September 11, 13
CheckStyle
<module name="Checker">
<module name="TreeWalker">
<property name="tabWidth" value="2"/>
<module name="Indentation">
<property name="caseIndent" value="2"/>
<property name="basicOffset" value="2"/>
</module>
<module name="GenericWhitespace"/>
<module name="AvoidStarImport"/>
<module name="ConstantName"/>
<module name="EmptyBlock"/>
<module name="MemberName"/>
<module name="ConstantName"/>
<module name="MethodName"/>
<module name="TypeName"/>
</module>
<module name="StrictDuplicateCode">
<property name="min" value="15"/>
</module>
</module>
Wednesday, September 11, 13
defaultConfig {
versionName '0.1.1'
versionCode System.env.BUILD_NUMBER ?
"$System.env.BUILD_NUMBER".toInteger() : 2
}
build.gradle
Auto-build Number
Wednesday, September 11, 13
Why is this relevant?
Wednesday, September 11, 13
Bug Hunting
defaultConfig {
versionName '0.1.1'
versionCode System.env.BUILD_NUMBER ?
"$System.env.BUILD_NUMBER".toInteger() : 2
}
build.gradle
Auto-build Number
Wednesday, September 11, 13
Build System
Build Slaves
Wednesday, September 11, 13
Build System Ouput
S3 Bucket
Build Errors
Dev Team
Beta Testers
Wednesday, September 11, 13
Thanks!
• http://bit.ly/gradle-jenkins for the code
Wednesday, September 11, 13
Recommended Reading
Android Gradle Plugin User Guide
Growing Object-Oriented Software, Guided By Tests
Wednesday, September 11, 13
Shameless Pitch
We build apps for iOS & Android
www.gargoyle.co
Wednesday, September 11, 13
Contact
David Y. Kay
@DavidYKay
dk@gargoyle.co
Wednesday, September 11, 13

Más contenido relacionado

Similar a Slaying Bugs with Gradle and Jenkins

Some simple tips for front-end performance in WordPress
Some simple tips for front-end performance in WordPressSome simple tips for front-end performance in WordPress
Some simple tips for front-end performance in WordPressiparr
 
Cooking an Omelette with Chef
Cooking an Omelette with ChefCooking an Omelette with Chef
Cooking an Omelette with Chefctaintor
 
How I Learned To Stop Worrying & Love HTML5
How I Learned To Stop Worrying & Love HTML5How I Learned To Stop Worrying & Love HTML5
How I Learned To Stop Worrying & Love HTML5Dale Cruse
 
Vinted life embetterment
Vinted life embettermentVinted life embetterment
Vinted life embettermentAgile Lietuva
 
Atlassian User Group San Francisco - August 2013
Atlassian User Group San Francisco - August 2013Atlassian User Group San Francisco - August 2013
Atlassian User Group San Francisco - August 2013Nicholas Muldoon
 
San Francisco User Group Presentations: 28 Aug 2013
San Francisco User Group Presentations: 28 Aug 2013San Francisco User Group Presentations: 28 Aug 2013
San Francisco User Group Presentations: 28 Aug 2013Atlassian
 
Android Design: Beyond the Guidelines
Android Design: Beyond the GuidelinesAndroid Design: Beyond the Guidelines
Android Design: Beyond the Guidelineskevingrant5
 
Kostentreiber bei der iOS Entwicklung
Kostentreiber bei der iOS EntwicklungKostentreiber bei der iOS Entwicklung
Kostentreiber bei der iOS EntwicklungReto Zenger
 
Kostentreiber bei der iOS-Entwicklung
Kostentreiber bei der iOS-EntwicklungKostentreiber bei der iOS-Entwicklung
Kostentreiber bei der iOS-Entwicklungxrb
 
Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5C4Media
 
Ruby meetup 7_years_in_testing
Ruby meetup 7_years_in_testingRuby meetup 7_years_in_testing
Ruby meetup 7_years_in_testingDigital Natives
 
TDD with LEGO at SDEC13
TDD with LEGO at SDEC13TDD with LEGO at SDEC13
TDD with LEGO at SDEC13BillyGarnet
 
Internet primer or Internet for Dummies (for Filipino women)
Internet primer or Internet for Dummies (for Filipino women)Internet primer or Internet for Dummies (for Filipino women)
Internet primer or Internet for Dummies (for Filipino women)Eric Clark Su
 
Design process
Design processDesign process
Design processTim Wright
 
5 Ways Thinking Content-first Will Save Your Butt
5 Ways Thinking Content-first Will Save Your Butt5 Ways Thinking Content-first Will Save Your Butt
5 Ways Thinking Content-first Will Save Your ButtZURB
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaVinicius Quaiato
 
Agileee 2013: Andrii Dzynia "How To Manage Testing in Agile World"
Agileee 2013: Andrii Dzynia "How To Manage Testing in Agile World"Agileee 2013: Andrii Dzynia "How To Manage Testing in Agile World"
Agileee 2013: Andrii Dzynia "How To Manage Testing in Agile World"SCRUMguides
 
DevOpsDay London Ben Hughes Security
DevOpsDay London Ben Hughes SecurityDevOpsDay London Ben Hughes Security
DevOpsDay London Ben Hughes Securitybeehooze
 
MongoTalk/Voyage
MongoTalk/VoyageMongoTalk/Voyage
MongoTalk/VoyageESUG
 

Similar a Slaying Bugs with Gradle and Jenkins (20)

Some simple tips for front-end performance in WordPress
Some simple tips for front-end performance in WordPressSome simple tips for front-end performance in WordPress
Some simple tips for front-end performance in WordPress
 
Cooking an Omelette with Chef
Cooking an Omelette with ChefCooking an Omelette with Chef
Cooking an Omelette with Chef
 
How I Learned To Stop Worrying & Love HTML5
How I Learned To Stop Worrying & Love HTML5How I Learned To Stop Worrying & Love HTML5
How I Learned To Stop Worrying & Love HTML5
 
Embedjs
EmbedjsEmbedjs
Embedjs
 
Vinted life embetterment
Vinted life embettermentVinted life embetterment
Vinted life embetterment
 
Atlassian User Group San Francisco - August 2013
Atlassian User Group San Francisco - August 2013Atlassian User Group San Francisco - August 2013
Atlassian User Group San Francisco - August 2013
 
San Francisco User Group Presentations: 28 Aug 2013
San Francisco User Group Presentations: 28 Aug 2013San Francisco User Group Presentations: 28 Aug 2013
San Francisco User Group Presentations: 28 Aug 2013
 
Android Design: Beyond the Guidelines
Android Design: Beyond the GuidelinesAndroid Design: Beyond the Guidelines
Android Design: Beyond the Guidelines
 
Kostentreiber bei der iOS Entwicklung
Kostentreiber bei der iOS EntwicklungKostentreiber bei der iOS Entwicklung
Kostentreiber bei der iOS Entwicklung
 
Kostentreiber bei der iOS-Entwicklung
Kostentreiber bei der iOS-EntwicklungKostentreiber bei der iOS-Entwicklung
Kostentreiber bei der iOS-Entwicklung
 
Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5
 
Ruby meetup 7_years_in_testing
Ruby meetup 7_years_in_testingRuby meetup 7_years_in_testing
Ruby meetup 7_years_in_testing
 
TDD with LEGO at SDEC13
TDD with LEGO at SDEC13TDD with LEGO at SDEC13
TDD with LEGO at SDEC13
 
Internet primer or Internet for Dummies (for Filipino women)
Internet primer or Internet for Dummies (for Filipino women)Internet primer or Internet for Dummies (for Filipino women)
Internet primer or Internet for Dummies (for Filipino women)
 
Design process
Design processDesign process
Design process
 
5 Ways Thinking Content-first Will Save Your Butt
5 Ways Thinking Content-first Will Save Your Butt5 Ways Thinking Content-first Will Save Your Butt
5 Ways Thinking Content-first Will Save Your Butt
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp Londrina
 
Agileee 2013: Andrii Dzynia "How To Manage Testing in Agile World"
Agileee 2013: Andrii Dzynia "How To Manage Testing in Agile World"Agileee 2013: Andrii Dzynia "How To Manage Testing in Agile World"
Agileee 2013: Andrii Dzynia "How To Manage Testing in Agile World"
 
DevOpsDay London Ben Hughes Security
DevOpsDay London Ben Hughes SecurityDevOpsDay London Ben Hughes Security
DevOpsDay London Ben Hughes Security
 
MongoTalk/Voyage
MongoTalk/VoyageMongoTalk/Voyage
MongoTalk/Voyage
 

Más de David Kay

Cross platform native development in f#
Cross platform native development in f#Cross platform native development in f#
Cross platform native development in f#David Kay
 
How to Start a Med Device Startup From Your Garage - Vancouver Edition
How to Start a Med Device Startup From Your Garage - Vancouver EditionHow to Start a Med Device Startup From Your Garage - Vancouver Edition
How to Start a Med Device Startup From Your Garage - Vancouver EditionDavid Kay
 
Drag and Drop UI Development with React Native
Drag and Drop UI Development with React NativeDrag and Drop UI Development with React Native
Drag and Drop UI Development with React NativeDavid Kay
 
Front-end God Mode with Reagent and Figwheel
Front-end God Mode with Reagent and FigwheelFront-end God Mode with Reagent and Figwheel
Front-end God Mode with Reagent and FigwheelDavid Kay
 
Intro to Apache Storm
Intro to Apache StormIntro to Apache Storm
Intro to Apache StormDavid Kay
 
App architecture101
App architecture101App architecture101
App architecture101David Kay
 

Más de David Kay (6)

Cross platform native development in f#
Cross platform native development in f#Cross platform native development in f#
Cross platform native development in f#
 
How to Start a Med Device Startup From Your Garage - Vancouver Edition
How to Start a Med Device Startup From Your Garage - Vancouver EditionHow to Start a Med Device Startup From Your Garage - Vancouver Edition
How to Start a Med Device Startup From Your Garage - Vancouver Edition
 
Drag and Drop UI Development with React Native
Drag and Drop UI Development with React NativeDrag and Drop UI Development with React Native
Drag and Drop UI Development with React Native
 
Front-end God Mode with Reagent and Figwheel
Front-end God Mode with Reagent and FigwheelFront-end God Mode with Reagent and Figwheel
Front-end God Mode with Reagent and Figwheel
 
Intro to Apache Storm
Intro to Apache StormIntro to Apache Storm
Intro to Apache Storm
 
App architecture101
App architecture101App architecture101
App architecture101
 

Último

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 

Slaying Bugs with Gradle and Jenkins