SlideShare a Scribd company logo
New	Android	Project:
The	Most	Important	Decisions
Vasiliy	Zukanov
Freelance	Android	developer	&	consultant
@VasiliyZukanov 2
Who	started	a	new	professional	Android	project	
in	the	past	3	years?
…past	2	years?
…past	year?
@VasiliyZukanov 3
Which	language,	frameworks,	libraries,	practices,	etc.	
should	I	use	in	a	new	project?
RxJava
Kotlin
Java
Coroutines
ViewModel
Koin
Dagger Flow
Navigation
Conductor
MVI
MVVM
MVP
MVC
AutoValue
ConstraintLayout
Timber
ThreadPool
WorkManager
LiveData
Glide
Fragment
Single-activity
EventBus
Gson
Picasso
Fresco
Coil
SqlDelight
Room Moshi
Firebase
Modularization
@VasiliyZukanov 4
Architecture
@VasiliyZukanov 5
Architecture represents the
significant design decisions that shape
a system, where significant is
measured by cost of change.
“
Architecture	– Grady	Booch
@VasiliyZukanov 6
Architecture is the set of decisions
that are hard to change.
“
Architecture	– Martin	Fowler
@VasiliyZukanov 7
Architecture	
≈	
Subset	of	design	decisions	that	affect	the	cost	of	change	the	most
≈
Maintainability!
@VasiliyZukanov 8
Maintainability	is	important
As	well	as	staying	pragmatic	and	getting	stuff	done!
@VasiliyZukanov 9
The	Pareto	principle	(80-20	rule)
80%	of	the	effects	come	from	20%	of	the	causes
@VasiliyZukanov 10
Dependency	Injection
Dependency	injection	misconception
@VasiliyZukanov 11
public class SomeClient {
private final SomeService mSomeService;
public SomeClient() {
mSomeService = new SomeService();
}
}
public class SomeClient {
private final SomeService mSomeService;
public SomeClient(SomeService someService) {
mSomeService = someService;
}
}
That’s	bad	because	UNIT	TESTS!
(can’t	replace	the	implementation)
That’s	good	because	UNIT	TESTS
(can	replace	the	implementation)
So,	no	need	for	DI	if	you	don’t	unit	test	and	never	replace	implementations?
Reuse	challenge
@VasiliyZukanov 12
public class FetchCurrentUserUseCaseSync {
public FetchCurrentUserUseCaseSync(ParseUserConverter parseUserConverter,
ParseUsersRetriever parseUsersRetriever,
OfflineDetector offlineDetector,
MyLogger myLogger) {
...
}
@WorkerThread
public CurrentUser fetchCurrentUser() {
...
}
}
+	4	services +	3	transitive	services =	instantiate	8	objectsthis	client
To	get	current	user’s	info	I	need:
FetchCurrentUserUseCaseSync is	used	in	14	different	places!
Reuse	strategies
Manually	instantiate	8	*	14	=	112	objects
Reduce	objects	count	through	code	duplication	(multiplication)
God	Objects
Static	calls	and	global	static	state	(e.g.	Singletons)
Dependency	injection
@VasiliyZukanov 13
Pretty	much	guaranteed	if	you	don’t	use	DI
Dependency	Injection	Architectural	Pattern
@VasiliyZukanov 14
Application
Construction Set
class
Functional Set
classintegration
Instantiation	logic	for	each	service	is	defined	once in	construction	set,	
and	then	all	classes from	functional	set	simply	get	the	required	dependencies	from	outside
Dependency	Injection	example
@VasiliyZukanov 15
public class ClipSettingsFragment extends BaseFragment {
@Inject ViewMvcFactory mViewMvcFactory;
@Inject ClipSettingsController mController;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
getControllerComponent().inject(this);
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
...
}
...
}
Declare	the	required	services
Delegate	resolution	to	Dagger
Reused	tens	of	transitive	dependencies;	thousands	of	lines	of	code
@VasiliyZukanov 16
Dependency	Injection	is	very	beneficial,	but	extremely	hard	
to	introduce	into	existing	code
Adopt	it	from	the	onset	of	your	new	project!
@VasiliyZukanov 17
Dagger	dependency	injection	framework	is	the	best	choice	
for	most	Android	projects	today
@VasiliyZukanov 18
Decoupled	User	Interface	Logic
Define	application’s	UI
Capture	user’s	interactions	with	the	UI
@VasiliyZukanov 19
UI	logic	responsibilities
@VasiliyZukanov 20
Why	decouple	UI	logic	specifically?
Detailed	and	accurate	requirements	(UI	mockups)
Much	higher	rate	of	change	in	most	cases
Unreadable	- verbose,	messy,	hacky,	etc.
Easiest	to	test	manually
Hardest	to	test	automatically
@VasiliyZukanov 21
UI	logic	characteristics
@VasiliyZukanov 22
Decoupling	of	UI	logic	is	the	main	rationale	behind	
MVx presentation	layer	architectural	patterns
Kotlin	Multiplatform?Jetpack	Compose?
@VasiliyZukanov 23
Example	of	decoupled	UI
@VasiliyZukanov 24
More	information	about	UI	decoupling	and	MVx in	my	talk	
from	Droidcon Berlin	2018
@VasiliyZukanov 25
Adopt	some	MVx at	the	beginning	of	a	new	project
You	can	change	your	mind	later*
@VasiliyZukanov 26
Package	by	feature
Top-level	packages	should	correspond	to	core	
concepts	of	app’s	business	domain
Package	by	feature	examples
@VasiliyZukanov 27
Google	IO	2019	app
Feature	≠	screen
@VasiliyZukanov 28
Clip	playback	
screen
Settings	screen
Standalone domain features prevent
inter-dependencies between
unrelated screens
Looks like a single “clips” feature…
…but…
Avoid	preliminary	modularization
@VasiliyZukanov 29
Feature	packages	are	
straightforward	to	extract	as	
feature	modules	IF	and	
WHEN	the	need	will	arise
@VasiliyZukanov 30
As	you	add	more	features,	you	learn	more	about	your	
business	domain
Constantly	refactor	feature	packages	to	reflect	your	most	
up-to-date	understanding
@VasiliyZukanov 31
Dependency	Injection,	MVx and	Package-by-Feature	will	give	
you	the	“80%	of	architecture”	on	most	projects
@VasiliyZukanov 32
Use	the	tools	you’re	familiar	with
@VasiliyZukanov 33
Questions
My	Android	Development	Courses
@VasiliyZukanov 34
www.TechYourChance.com
@VasiliyZukanov 35
Thank	you!
References
1. Making	Architecture	Matter	(Martin	Fowler)	- https://youtu.be/DngAZyWMGR0
2. Dependency	Injection	in	Android	- https://www.techyourchance.com/dependency-injection-
android/
3. Activities	and	Fragments	are	not	MVx Views	(Vasiliy	Zukanov)	-
https://youtu.be/oOARoQr4H5U
@VasiliyZukanov 36

More Related Content

Similar to New Android Project - The Most Important Decisions (Droidcon TLV 2019)

IRJET- Determination of the Efficacy of Civil soft Quick Series in the Desi...
IRJET- 	 Determination of the Efficacy of Civil soft Quick Series in the Desi...IRJET- 	 Determination of the Efficacy of Civil soft Quick Series in the Desi...
IRJET- Determination of the Efficacy of Civil soft Quick Series in the Desi...
IRJET Journal
 
Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions
Chris Richardson
 
At the Trailhead with Matt Stine
At the Trailhead with Matt StineAt the Trailhead with Matt Stine
At the Trailhead with Matt Stine
VMware Tanzu
 
Putting the Native in React Native - React Native Boston
Putting the Native in React Native - React Native BostonPutting the Native in React Native - React Native Boston
Putting the Native in React Native - React Native Boston
stan229
 
Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetup
Viktor Sadovnikov
 
OSS Projects Knowledge Mining with CROSSMINER, OW2con'18, June 7-8, 2018
OSS Projects Knowledge Mining with CROSSMINER, OW2con'18, June 7-8, 2018OSS Projects Knowledge Mining with CROSSMINER, OW2con'18, June 7-8, 2018
OSS Projects Knowledge Mining with CROSSMINER, OW2con'18, June 7-8, 2018
OW2
 
Project Management:Life Cycle & Phases.
Project Management:Life Cycle & Phases.Project Management:Life Cycle & Phases.
Project Management:Life Cycle & Phases.
Ashutosh Mishra
 
Mobile Applications Architecture - GDG Ternopil' Architecture Components Meetup
Mobile Applications Architecture - GDG Ternopil' Architecture Components MeetupMobile Applications Architecture - GDG Ternopil' Architecture Components Meetup
Mobile Applications Architecture - GDG Ternopil' Architecture Components Meetup
Constantine Mars
 
Iterative Architecture: Your Path to on-time Delivery
Iterative Architecture: Your Path to on-time DeliveryIterative Architecture: Your Path to on-time Delivery
Iterative Architecture: Your Path to on-time Delivery
Asanka Abeysinghe
 
Construction Games For Robots - Lecture#01
Construction Games For Robots - Lecture#01Construction Games For Robots - Lecture#01
Construction Games For Robots - Lecture#01
Andrea Rossi
 
Choosing the Right Technologies A Guide to Frameworks and Tools for Web App D...
Choosing the Right Technologies A Guide to Frameworks and Tools for Web App D...Choosing the Right Technologies A Guide to Frameworks and Tools for Web App D...
Choosing the Right Technologies A Guide to Frameworks and Tools for Web App D...
BitCot
 
Modern JavaScript Frameworks: Angular, React & Vue.js
Modern JavaScript Frameworks: Angular, React & Vue.jsModern JavaScript Frameworks: Angular, React & Vue.js
Modern JavaScript Frameworks: Angular, React & Vue.js
Jonas Bandi
 
Become More Agile By Building The Right Software Architecture
Become More Agile By Building The Right Software ArchitectureBecome More Agile By Building The Right Software Architecture
Become More Agile By Building The Right Software Architecture
Belatrix Software
 
Talent42 2017: What to Get to Git Programers - Jeff Szczepanski
Talent42 2017: What to Get to Git Programers - Jeff SzczepanskiTalent42 2017: What to Get to Git Programers - Jeff Szczepanski
Talent42 2017: What to Get to Git Programers - Jeff Szczepanski
Talent42
 
Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022
Matt Raible
 
Leveraging User insight across the stack
Leveraging User insight across the stackLeveraging User insight across the stack
Leveraging User insight across the stack
cLabs, working on Celo
 
Would React js Remain To Prevail in 2019?
Would React js Remain To Prevail in 2019?Would React js Remain To Prevail in 2019?
Would React js Remain To Prevail in 2019?
Mobiloitte
 
V SYSTEMS - KR Meetup
V SYSTEMS - KR MeetupV SYSTEMS - KR Meetup
V SYSTEMS - KR Meetup
V SYSTEMS
 
Is software engineering research addressing software engineering problems?
Is software engineering research addressing software engineering problems?Is software engineering research addressing software engineering problems?
Is software engineering research addressing software engineering problems?
Gail Murphy
 
All these moments will be lost in time: the web, the future, and us
All these moments will be lost in time: the web, the future, and usAll these moments will be lost in time: the web, the future, and us
All these moments will be lost in time: the web, the future, and us
Sally Lait
 

Similar to New Android Project - The Most Important Decisions (Droidcon TLV 2019) (20)

IRJET- Determination of the Efficacy of Civil soft Quick Series in the Desi...
IRJET- 	 Determination of the Efficacy of Civil soft Quick Series in the Desi...IRJET- 	 Determination of the Efficacy of Civil soft Quick Series in the Desi...
IRJET- Determination of the Efficacy of Civil soft Quick Series in the Desi...
 
Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions
 
At the Trailhead with Matt Stine
At the Trailhead with Matt StineAt the Trailhead with Matt Stine
At the Trailhead with Matt Stine
 
Putting the Native in React Native - React Native Boston
Putting the Native in React Native - React Native BostonPutting the Native in React Native - React Native Boston
Putting the Native in React Native - React Native Boston
 
Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetup
 
OSS Projects Knowledge Mining with CROSSMINER, OW2con'18, June 7-8, 2018
OSS Projects Knowledge Mining with CROSSMINER, OW2con'18, June 7-8, 2018OSS Projects Knowledge Mining with CROSSMINER, OW2con'18, June 7-8, 2018
OSS Projects Knowledge Mining with CROSSMINER, OW2con'18, June 7-8, 2018
 
Project Management:Life Cycle & Phases.
Project Management:Life Cycle & Phases.Project Management:Life Cycle & Phases.
Project Management:Life Cycle & Phases.
 
Mobile Applications Architecture - GDG Ternopil' Architecture Components Meetup
Mobile Applications Architecture - GDG Ternopil' Architecture Components MeetupMobile Applications Architecture - GDG Ternopil' Architecture Components Meetup
Mobile Applications Architecture - GDG Ternopil' Architecture Components Meetup
 
Iterative Architecture: Your Path to on-time Delivery
Iterative Architecture: Your Path to on-time DeliveryIterative Architecture: Your Path to on-time Delivery
Iterative Architecture: Your Path to on-time Delivery
 
Construction Games For Robots - Lecture#01
Construction Games For Robots - Lecture#01Construction Games For Robots - Lecture#01
Construction Games For Robots - Lecture#01
 
Choosing the Right Technologies A Guide to Frameworks and Tools for Web App D...
Choosing the Right Technologies A Guide to Frameworks and Tools for Web App D...Choosing the Right Technologies A Guide to Frameworks and Tools for Web App D...
Choosing the Right Technologies A Guide to Frameworks and Tools for Web App D...
 
Modern JavaScript Frameworks: Angular, React & Vue.js
Modern JavaScript Frameworks: Angular, React & Vue.jsModern JavaScript Frameworks: Angular, React & Vue.js
Modern JavaScript Frameworks: Angular, React & Vue.js
 
Become More Agile By Building The Right Software Architecture
Become More Agile By Building The Right Software ArchitectureBecome More Agile By Building The Right Software Architecture
Become More Agile By Building The Right Software Architecture
 
Talent42 2017: What to Get to Git Programers - Jeff Szczepanski
Talent42 2017: What to Get to Git Programers - Jeff SzczepanskiTalent42 2017: What to Get to Git Programers - Jeff Szczepanski
Talent42 2017: What to Get to Git Programers - Jeff Szczepanski
 
Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022
 
Leveraging User insight across the stack
Leveraging User insight across the stackLeveraging User insight across the stack
Leveraging User insight across the stack
 
Would React js Remain To Prevail in 2019?
Would React js Remain To Prevail in 2019?Would React js Remain To Prevail in 2019?
Would React js Remain To Prevail in 2019?
 
V SYSTEMS - KR Meetup
V SYSTEMS - KR MeetupV SYSTEMS - KR Meetup
V SYSTEMS - KR Meetup
 
Is software engineering research addressing software engineering problems?
Is software engineering research addressing software engineering problems?Is software engineering research addressing software engineering problems?
Is software engineering research addressing software engineering problems?
 
All these moments will be lost in time: the web, the future, and us
All these moments will be lost in time: the web, the future, and usAll these moments will be lost in time: the web, the future, and us
All these moments will be lost in time: the web, the future, and us
 

Recently uploaded

All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
Ayan Halder
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 

Recently uploaded (20)

All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 

New Android Project - The Most Important Decisions (Droidcon TLV 2019)