SlideShare a Scribd company logo
Youdon’tknowangular@joshj
You.
Don’t.
Know.
Angular.
Youdon’tknowangular@joshj
#01
Mobile Architect //
Transamerica
Mobile Architect,
Entrepreneur, FPV
Pilot & Whiskey Fan.
INTR.
ODU.
CTI.
ON.
Youdon’tknowangular@joshj
You.
Don’t.
Know.
Angular.
Youdon’tknowangular@joshj
Youdon’tknowangular@joshj
Money comes raining
down and life is as it
should be…
Youdon’tknowangular@joshj
Usually it’s this…
Youdon’tknowangular@joshj
Youdon’tknowangular@joshj
Architecture.
“…in the end, architecture boils down to
whatever the important stuff is.”
- Martin Fowler
Youdon’tknowangular@joshj
Architecture.
“the decisions that are hard to change”
Youdon’tknowangular@joshj
Architecture.
• Code Craftsmanship
• Flow Strategies
• I/O Strategies
• Readability
Youdon’tknowangular@joshj
Think Like an
Architect.
Youdon’tknowangular@joshj
Youdon’tknowangular@joshj
Craftsmanship
Code
Youdon’tknowangular@joshj
Code.
Crafts.
man.
ship.
Find ways to love the code you
are working on.
Youdon’tknowangular@joshj
Build a working document your
team can get behind.
Code.
Crafts.
man.
ship.
Youdon’tknowangular@joshj
If you have a team: Have
training / idea sharing times.
(If not, take a class)
Code.
Crafts.
man.
ship.
Youdon’tknowangular@joshj
Be a Zen Master Architect.
Code.
Crafts.
man.
ship.
Youdon’tknowangular@joshj
FlowStrategies
#03
Youdon’tknowangular@joshj
Nomenclature
Almost anything can be a service. A service is typically a class with a narrow,
well-defined purpose. It should do something specific and do it well.
Service
The component or set of methods that will be using our service.
Consumer
Youdon’tknowangular@joshj
Bicycle Wheel
Flow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Bicycle Wheel
Service
Flow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Bicycle Wheel
Service
Consumers
Flow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
export	class	Logger	{	
		log(msg:	any)			{	console.log(msg);	}	
		error(msg:	any)	{	console.error(msg);	}	
		warn(msg:	any)		{	console.warn(msg);	}	
}Service
Consumer
export	class	HeroService	{	
		private	heroes:	Hero[]	=	[];	
		constructor(	
				private	backend:	BackendService,	
				private	logger:	Logger	
		)	{	}	
		getHeroes()	{	
				this.backend.getAll(Hero).then(	(heroes:	Hero[])	=>	{	
						this.logger.log(`Fetched	${heroes.length}	heroes.`);	
						this.heroes.push(...heroes);	//	fill	cache	
				});	
				return	this.heroes;	
		}	
}
Youdon’tknowangular@joshj
Bicycle Wheel
Service
Consumers
Flow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Bicycle Wheel
Service
Consumers
Consumers
Consumers
Consumers
Consumers
Youdon’tknowangular@joshj
Bicycle Wheel
Flow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
import	{	NgModule	}						from	'@angular/core';	
import	{	BrowserModule	}	from	'@angular/platform-browser';	
@NgModule({	
		imports:						[	BrowserModule	],	
		providers:				[	Logger	],	
		declarations:	[	AppComponent	],	
		exports:						[	AppComponent	],	
		bootstrap:				[	AppComponent	]	
})	
export	class	AppModule	{	}
Service
Youdon’tknowangular@joshj
Bicycle Wheel
Flow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Bicycle Wheel
Youdon’tknowangular@joshj
Waterfall
Flow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Waterfall
ServiceFlow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Service NavControllerFlow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Youdon’tknowangular@joshj
Don’t Use Events(Unless you absolutely have to…)
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Waterfall
Service NavController
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Waterfall
Service
Consumer
NavController
PageComponent
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Waterfall
Service
Consumer
Consumer Child
NavController
PageComponent
ButtonComponent
Youdon’tknowangular@joshj
@Injectable()	
export	class	NavigationService	{	
		public	navigate()	{	
				//	Do	something	
		}	
}
Service
Youdon’tknowangular@joshj
@Injectable()	
export	class	NavigationService	{	
		public	navigate()	{	
				//	Do	something	
		}	
}
export	class	MyPageComponent		{	
		constructor	(	
				private	navigationService:	NavigationService	
		)	{}	
}
<nav-button	[navigationService]="navigationService">
Service
Consumer
Youdon’tknowangular@joshj
@Injectable()	
export	class	NavigationService	{	
		public	navigate()	{	
				//	Do	something	
		}	
}
export	class	MyPageComponent		{	
		constructor	(	
				private	navigationService:	NavigationService	
		)	{}	
}
export	class	NavButtonComponent		{	
		@Input()	navigationService:	NavigationService;	
		onButtonClick()	{	
				this.navigationService.navigate();	
	}	
}
<nav-button	[navigationService]="navigationService">
Service
Consumer
Consumer Child
Youdon’tknowangular@joshj
import	{	NavigationService	}	from	'./shared/navigation.service';	
@Component({	
		selector:	'nav-button',	
		template:	`<button	(click)="navigationService.navigate()">Navigate</button>`	
})	
export	class	NavButtonComponent		{	
		@Input()	navigationService:	NavigationService;	
}
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Waterfall
Service
Consumer
Consumer Child
NavController
PageComponent
ButtonComponent
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
The Molecule
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
https://angular-realworld.stackblitz.io
Modular
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
https://angular.io/guide/ngmodule
NgModules
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Functional
Blocks
Shared
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Shared
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies. export	*	from	'./article-helpers';	
export	*	from	'./buttons';	
export	*	from	'./layout';	
export	*	from	'./list-errors.component';	
export	*	from	'./models';	
export	*	from	'./services';	
export	*	from	'./shared.module';	
export	*	from	'./show-authed.directive';
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
import	{	ArticleListComponent	}	from	'../shared';
import	{	ArticleListComponent	}	from	'../shared/article-
helpers/article-list.component';
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Module
Folder
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
• Organized
• Easy to reference
• Self contained
• Safer for teams
Benefits
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Module
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
NgAppModule
import	{	NgModule	}	from	'@angular/core';	
import	{	BrowserModule	}	from	'@angular/platform-browser';	
import	{	FormsModule	}	from	'@angular/forms';	
import	{	AppComponent	}	from	'./app.component';	
import	{	HelloComponent	}	from	'./hello.component';	
import	{	NavButtonComponent	}	from	'./nav-
button.component';	
@NgModule({	
		imports:						[	BrowserModule,	FormsModule	],	
		declarations:	[	AppComponent,	HelloComponent,	
NavButtonComponent],	
		bootstrap:				[	AppComponent	]	
})	
export	class	AppModule	{	}
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies. Imports
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Imports
@NgModule({	
		imports:						[	BrowserModule,	FormsModule	],	
		declarations:	[	AppComponent,	HelloComponent,	
NavButtonComponent],	
		bootstrap:				[	AppComponent	]	
})	
export	class	AppModule	{	}
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
Imports
import	{	ArticleModule	}	from	'./article/article.module';	
@NgModule({	
		declarations:	[],					
		imports:	[	
				ArticleModule,	
		],	
		providers:	[],	
		bootstrap:	[AppComponent]	
})	
export	class	AppModule	{	}
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
import	{	ModuleWithProviders,	NgModule	}	from	'@angular/
core';	
import	{	RouterModule	}	from	'@angular/router';	
import	{	ArticleComponent	}	from	'./article.component';	
import	{	ArticleCommentComponent	}	from	'./article-
comment.component';	
import	{	ArticleResolver	}	from	'./article-
resolver.service';	
import	{	MarkdownPipe	}	from	'./markdown.pipe';	
import	{	SharedModule	}	from	'../shared';
article.module.ts
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
const	articleRouting:	ModuleWithProviders	=	
RouterModule.forChild([	
		{	
				path:	'article/:slug',	
				component:	ArticleComponent,	
				resolve:	{	
						article:	ArticleResolver	
				}	
		}	
]);
article.module.ts
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
@NgModule({	
		imports:	[	
				articleRouting,	
				SharedModule	
		],	
		declarations:	[	
				ArticleComponent,	
				ArticleCommentComponent,	
				MarkdownPipe	
		],	
		providers:	[	
				ArticleResolver	
		]	
})	
export	class	ArticleModule	{}	
article.module.ts
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
https://angular.io/guide/ngmodule
NgModules
Youdon’tknowangular@joshj
Flow.
stra.
teg.
ies.
https://angular-realworld.stackblitz.io
Molecule
Youdon’tknowangular@joshj
I/O Stratagies.
Youdon’tknowangular@joshj
#01
Whenever data
enters or leaves the
application have a
strategy for hiding
the source or the
target from the
application as a
whole.
I/O
Stratagies.
Youdon’tknowangular@joshj
I/O Stratagies.
Youdon’tknowangular@joshj
I/O Stratagies.
Components
Services
Adapters
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Article Component http()
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Article Component
Article Service http()
getArticles()
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Article Component
API Service http()
getArticles()
this.apiService.get()Article Service
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Article Component
ApiService
apiHttpStrategy
getArticles()
this.apiService.get()Article Service
apiFileStrategy
Youdon’tknowangular@joshj
@NgModule({	
		declarations:	[	
		],	
		imports:	[	
		],	
		providers:	[	
				{	
						provide:	ApiService,	
						useFactory:	(http:	Http,	jwtService:	JwtService)	=>	{	
								if	(environment.production)	{	
										return	new	ApiService(http,	jwtService);	
								}	else	{	
										return	new	MockApiService(http,	jwtService);	
								}	
						},	
						deps:	[Http,	JwtService]	
				}	
		],	
		bootstrap:	[AppComponent]	
});	
I/O.
stra.
teg.
ies.
Youdon’tknowangular@joshj
I/O Stratagies.
Components
Services
Adapters
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Article Component http()
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Article Component
Analytics Service http()
event()
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Article Component
Analytics Service event()
this.analytics.event()
Google Strategy http()
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Article Component
Analytics Service
Crashlytics Firebase
event()
this.analytics.event()
Youdon’tknowangular@joshj
export	class	AnalyticsService	{	
		private	strategies:	Array<any>	
		constructor(	
				private	crashlyticsAnalytics:	CrashlyticsAnalyticsService,	
				private	firebaseAnalyticsService:	FirebaseAnalyticsService,	
				private	googleAnalyticsService:	GoogleAnalyticsService	
		)	{	
				this.strategies	=	[	
						crashlyticsAnalytics,	
						firebaseAnalyticsService,	
						googleAnalyticsService	
				]	
		};	
		public	event()	{	
				for	(let	strategy	of	this.strategies)	{	
						strategy.event();	
				}	
		};	
}
Youdon’tknowangular@joshj
I/O Stratagies.
Youdon’tknowangular@joshj
Readability
Youdon’tknowangular@joshj
“Any fool can write code that a
computer can understand. Good
programmers write code that humans
can understand.”
Martin Fowler
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
The rule of
“huh”
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
L.I.F.T
• Locate
• Identify
• Flat
• Try to be DRY
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Import line spacing
import	{	Injectable	}	from	'@angular/core';	
import	{	Http	}							from	'@angular/http';	
import	{	Hero	}	from	'./hero.model';	
import	{	ExceptionService}	from	'../../core';
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Component
Selector
Names
selector:	'toh-hero-button',
<toh-hero-button></toh-hero-button>
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Don’t Abbreviate your
constructor arguments or
instantiated classes.
constructor(	
				private	navigationService:	NavigationService,	
				private	myElementReference:	MyElementReference	
)	{	
				this.fooAwesome	=	new	FooAwesome();	
};
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
constructor(	
				private	navServ:	NavigationService,	
				private	el:	MyElementReference	
)	{	
				this.foo	=	new	FooAwesome();	
};	
No…
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Small Functions
		private	specificTask()	{	
				var	doSomethingWell	=	true;	
				var	doSomethingSpecific	=	true;	
				return	(doSomethingWell	&&	doSomethingSpecific);	
		}
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Use a Code Tool
Youdon’tknowangular@joshj
I/O.
stra.
teg.
ies.
Use Semicolons;
seriously.
Youdon’tknowangular@joshj
Think Like an
Architect.
Youdon’tknowangular@joshj
END.
@joshj //
joshjensen.com

More Related Content

Recently uploaded

Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
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
 
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
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
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
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Undress Baby
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 

Recently uploaded (20)

Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
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 ⚡️
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
Alireza Esmikhani
 

Featured (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

ConnectTech2017 - You don't know Angular