SlideShare a Scribd company logo
Sébastien Le	Marchand |	@slemarchand
Developing	faster	than	ever
No	more	wasting	time
Sébastien Le	Marchand
@slemarchand
Sébastien Le	Marchand |	@slemarchand
§ About	efficiency
§ Hands-free	coding
§ Deploying	without	waiting
§ What’s	next?
Agenda
Sébastien Le	Marchand |	@slemarchand
§ 10	years of	experience on	Liferay (since v4.3)
§ Including 6	years as	employee of	a	« Gold	Service	Partner »	
company
§ Now Freelancer
Sébastien	Le	Marchand
@slemarchand linkedin.com/in/slemarchand
Paris,	France
Sébastien Le	Marchand |	@slemarchand
About	Efficiency
Levers	for	optimal	development
Sébastien Le	Marchand |	@slemarchand
« Efficiency is the (often measurable) ability to
avoid wasting materials, energy, efforts, money,
and time in doing something or in producing a
desired result. In a more general sense, it is the
ability to do things well, successfully, and
without waste. »
[wikipedia.org]
Sébastien Le	Marchand |	@slemarchand
https://xkcd.com/303
Sébastien Le	Marchand |	@slemarchand
§ Writing &	debugging recurring code
§ Waiting during compilation,	packaging	or	deployment
§ Repeating again and	again the	same manual tasks from GUI
What is waste in	development activities?
Sébastien Le	Marchand |	@slemarchand
Hands-free	coding
Let’s	go	to	generate	code
Sébastien Le	Marchand |	@slemarchand
§ Avoid time	spent to	manually write this code
§ Reduce bugs…	and	so	reduce	time	to	fix	them	!
§ Improve code	homogeneity…	and	so	maintenability	!
Why generate « recurring »	code?
Sébastien Le	Marchand |	@slemarchand
§ Blade templates (26)
§ Maven archetypes (48)
§ Liferay Studio	Templates (25)
Code	generation 101:	create project from templates
$ blade create –t mvc-portlet myproject-web
$ mvn archetype:generate -Dfilter=liferay
Sébastien Le	Marchand |	@slemarchand
§ Define services	through service.xml file
§ Persistance	services	layer:	fully generated
§ Business	services	layer	:	very basic…	you	need	to	code	the	
missing	parts!
Service	Builder:	generate services	layers
Sébastien Le	Marchand |	@slemarchand
resource-actions/default.xml
*LocalServiceImpl::*
portlet-model-hints.xml
*.jsp
*Portlet
*ActionCommand
*PermissionChecker
*Indexer
. . .
. . .
*RenderCommand
CRUD	UI
Service
Builder
generated
code
Sébastien Le	Marchand |	@slemarchand
§ Some basic	CRUD	mechanics (ID	creation for	example)
§ Permissions
§ Indexing
§ Asset features handling
§ Web	layer	(the	portlet!)
§ …
Service	Builder missing stuff for	common use-cases
Sébastien Le	Marchand |	@slemarchand
A	New	Hope
Damascus
CLI
base.json
models descriptor
« Ready-To-Go »	OSGi modules
myproject-api
myproject-service
myproject-web
Sébastien Le	Marchand |	@slemarchand https://github.com/yasuflatland-lf/damascus
by	Yasuyuki Takeo
(here at	DEVCON	2017)
Sébastien Le	Marchand |	@slemarchand
§ « Events	Manager »	application
§ 1	model:	« Public	Event »
Let’s go	with a	concrete example
Sébastien Le	Marchand |	@slemarchand
§ Initialize project (from a	Liferay Workspace)
§ Update	model	in	events-manager/base.json file
§ Generate modules	with Damascus
Just	do	it!
$ cd events-manager
$ damascus -create
$ damascus -init EventsManager -p com.slemarchand.events
Sébastien Le	Marchand |	@slemarchand
{
"projectName": "EventsManager",
"packageName" : "com.slemarchand.events",
"liferayVersion": "70",
"applications": [
{
"model" : "PublicEvent",
"title" : "Public Event",
"web" : "true",
"asset": {
"assetTitleFieldName": "eventTitle",
"assetSummaryFieldName": "eventSummary",
"categories": "true",
"discussion": "true",
"ratings": "true",
"tags": "true",
"relatedAssets": "true",
"fullContentFieldName": "eventFullContent",
"workflow": "true",
"generateActivity": "true",
"trash":"true"
},
"fieldsName" : "Events",
"fields": [
Sébastien Le	Marchand |	@slemarchand
"generateActivity": "true",
"trash":"true"
},
"fields": [
{
"type": "com.liferay.damascus.cli.json.fields.Long",
"primary":true,
"name": "eventId",
"title": "ID",
"showFieldInView": "false",
"required": "true"
},
{
"type": "com.liferay.damascus.cli.json.fields.Varchar",
"name": "eventName",
"title": "Name",
"length": "80",
"showFieldInView": "true",
"required": "true"
},
]
}
]
}
…
Sébastien Le	Marchand |	@slemarchand
Ready to	deploy!
$ blade deploy
Sébastien Le	Marchand |	@slemarchand
Create (1/2)
Sébastien Le	Marchand |	@slemarchand
Create (2/2)
Sébastien Le	Marchand |	@slemarchand
Navigation
Sébastien Le	Marchand |	@slemarchand
Actions	on	an	entity
Sébastien Le	Marchand |	@slemarchand
Sorting
Sébastien Le	Marchand |	@slemarchand
Search
Sébastien Le	Marchand |	@slemarchand
§ « Fire &	Forget »:	after manual
code	modification,	you can’t safely
launch generation again
§ If	you want,	you can just keep
small parts	of	generated code	
What are	usages	for	Damascus?
« Service »	components
« Web »	components
Service	Builder generated code
Sébastien Le	Marchand |	@slemarchand
§ Give some feedback
§ Create new	issues
§ Comment	existing issues
§ Contribute
§ See README.md file	in	repo
We need you!
https://github.com/yasuflatland-lf/damascus
Sébastien Le	Marchand |	@slemarchand
Tribute	to	XML	Portlet Factory
Jack	A.	Rider
Juan	Gonzalez
§ Pioneer	of	CRUD	full-generation for	Liferay
§ Available for	all	6.x	versions	of	Liferay
§ 6.0
§ 6.1
§ 6.2
§ Get it
§ http://www.xmlportletfactory.org
§ https://github.com/xmlportletfactory/xmlportletfactory
Sébastien Le	Marchand |	@slemarchand
Deploying	without	waiting
Instant	deployment
Sébastien Le	Marchand |	@slemarchand
§ (Re-)Starting app server	(maybe 1	or	2	times	by	day),
§ Building	project,
§ Deploying to	local	server,
§ First	request (empty cache,	JSP	compilation,	etc)
Developing implies so often waiting
Sébastien Le	Marchand |	@slemarchand
http://memes.com/img/842717
Sébastien Le	Marchand |	@slemarchand
§ Use	Tomcat on	your local	machine
§ Uninstall permanently the	unused modules
§ Remove or	alter	some *.lpkg files, from ${liferay.home}/osgi/marketplace
§ Don’t forget to	clean	work & osgi/state	directories
Reducing app server	start time
Sébastien Le	Marchand |	@slemarchand
« Jukebox »	sample application(2):
§ Build (blade)	in	19,78	s without Gradle deamon
§ Build (blade)	in	14,78	s	with Gradle deamon
§ Bundle	installation	in	3,2	s
Deployement duration(1)
(1):	MacBook	Air	(13-inch,	Mid 2013)	- 1,7	GHz	Intel	Core i7	- 8	Go	1600	MHz	DDR3
(2):	https://github.com/epgarcia/jukebox-portlet/tree/LSNA.2016.Upgrade.to.7
Sébastien Le	Marchand |	@slemarchand
§ JRebel synchronize IDE	workspace and	the	application	deployed
on	the	local	server.
§ When developer make some code	changes,	JRebel instantly
update	bytecode (and	resources)	on	local	server,	without
full deployment.
§ Adding /	removing /	changing Classes,	Methods,	Constructors,	
Fields,	Annotations	and	Static field values
JRebel
Sébastien Le	Marchand |	@slemarchand
§ 3	steps
§ Set	JRebel Java	Agent	via	$JAVA_OPTS
§ Add org.zeroturnaround:gradle-jrebel-plugin plugin	to	your Gradle project
§ Customize rebel.xml
§ All	details :
§ https://web.liferay.com/fr/web/jardineworks/blog/-/blogs/liferay-7-jrebel
How-to	configure	JRebel for	Liferay 7
Sébastien Le	Marchand |	@slemarchand
§ JRebel is a	commercial	product (there is a	free-trial	period)	
§ Not	everyone can or	want to	buy a	licence
§ So	alternatives	are	welcome in	some contexts!
Instant	deployment without JRebel ?
Sébastien Le	Marchand |	@slemarchand
§ For	themes,	standard	liferay-theme-tasks do	the	job	with
watch task
§ https://dev.liferay.com/develop/reference/-
/knowledge_base/7-0/theme-gulp-tasks
Instant	theme deployment
$ gulp watch
Sébastien Le	Marchand |	@slemarchand
§ Install
§ Run from the	module	directory
§ Each change	in	module	sources	is automatically
synchronized using gogo	shell
Instant	modules	deployment:	liferay-osgi-watch
$ sudo npm install -g liferay-osgi-watch
$ lwatch
Sébastien Le	Marchand |	@slemarchand
« The fastest way to deploys is just… to not deploy »
[some hurry developer]
Sébastien Le	Marchand |	@slemarchand
§ Serving resources directly from source	code
§ Provide capability to	define rules to	route	some browser	
requests to	particular local	files
§ With « Map Local »	proper configuration,	static resources
(CSS,	JS)	are	loaded in	browser	from IDE	workspace local	files
JS	&	CSS:	« Map Local »	feature of	Charles	Proxy
charlesproxy.com
Sébastien Le	Marchand |	@slemarchand
§ You	can test	your local	static resources (including JS)	
§ With no	deployment delay
§ On	any environment…	including PRODUCTION 🎉
§ Privately,	without impacting other users
Beyond	the	local	server
Sébastien Le	Marchand |	@slemarchand
What’s	next?
The	game	is	not	over
Sébastien Le	Marchand |	@slemarchand
§ Each of	you knows at	least	one	uncommon trick	to	develop
faster
§ All	together,	you are	an	huge developement tips database !
YOU are	the	next step!
Sébastien Le	Marchand |	@slemarchand
§ Publish
§ Spread	the	word
Share	your tips &	tricks
Liferay
Blogs
Sébastien Le	Marchand |	@slemarchand
Thanks!
Some questions?
Want to share some tips?
http://lemarchand.co/devfaster
@slemarchand
linkedin.com/in/slemarchand
Sébastien Le Marchand

More Related Content

What's hot

Towards component based web UI with ReactJS
Towards component based web UI with ReactJSTowards component based web UI with ReactJS
Towards component based web UI with ReactJSOliver Häger
 
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...Puppet
 
Accelerating Your Web Application with NGINX
Accelerating Your Web Application with NGINXAccelerating Your Web Application with NGINX
Accelerating Your Web Application with NGINXKevin Jones
 
Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Gianluca Arbezzano
 
Making sense of streaming
Making sense of streamingMaking sense of streaming
Making sense of streamingDiego Pacheco
 
ThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - BrisbaneThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - BrisbaneThoughtworks
 
Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryCyrille Le Clerc
 
Microservices in Golang
Microservices in GolangMicroservices in Golang
Microservices in GolangMo'ath Qasim
 
Ich brauche einen Abstraktions-Layer für meine Cloud
Ich brauche einen Abstraktions-Layer für meine CloudIch brauche einen Abstraktions-Layer für meine Cloud
Ich brauche einen Abstraktions-Layer für meine CloudQAware GmbH
 
Secure Architecture and Programming 101
Secure Architecture and Programming 101Secure Architecture and Programming 101
Secure Architecture and Programming 101Mario-Leander Reimer
 
Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4aspyker
 
DevOps Spain 2019. Jaime Balañá-NetApp
DevOps Spain 2019. Jaime Balañá-NetAppDevOps Spain 2019. Jaime Balañá-NetApp
DevOps Spain 2019. Jaime Balañá-NetAppatSistemas
 
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow TutorialMichigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow TutorialJeffrey Sica
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSatSistemas
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesC4Media
 
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDB
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDBPowering Microservices with Docker, Kubernetes, Kafka, and MongoDB
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDBMongoDB
 

What's hot (20)

Towards component based web UI with ReactJS
Towards component based web UI with ReactJSTowards component based web UI with ReactJS
Towards component based web UI with ReactJS
 
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
 
Accelerating Your Web Application with NGINX
Accelerating Your Web Application with NGINXAccelerating Your Web Application with NGINX
Accelerating Your Web Application with NGINX
 
Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017
 
Mini-Training: Redis
Mini-Training: RedisMini-Training: Redis
Mini-Training: Redis
 
Version Controlling
Version ControllingVersion Controlling
Version Controlling
 
SOA.2020
SOA.2020SOA.2020
SOA.2020
 
Making sense of streaming
Making sense of streamingMaking sense of streaming
Making sense of streaming
 
ThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - BrisbaneThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - Brisbane
 
Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetry
 
Microservices in Golang
Microservices in GolangMicroservices in Golang
Microservices in Golang
 
Ich brauche einen Abstraktions-Layer für meine Cloud
Ich brauche einen Abstraktions-Layer für meine CloudIch brauche einen Abstraktions-Layer für meine Cloud
Ich brauche einen Abstraktions-Layer für meine Cloud
 
Secure Architecture and Programming 101
Secure Architecture and Programming 101Secure Architecture and Programming 101
Secure Architecture and Programming 101
 
Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4
 
DevOps Spain 2019. Jaime Balañá-NetApp
DevOps Spain 2019. Jaime Balañá-NetAppDevOps Spain 2019. Jaime Balañá-NetApp
DevOps Spain 2019. Jaime Balañá-NetApp
 
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow TutorialMichigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWS
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine Images
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDB
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDBPowering Microservices with Docker, Kubernetes, Kafka, and MongoDB
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDB
 

Similar to Developing faster than ever (Liferay DEVCON 2017)

Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!mold
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbMongoDB APAC
 
Everything-as-code – Polyglotte Entwicklung in der Praxis
Everything-as-code – Polyglotte Entwicklung in der PraxisEverything-as-code – Polyglotte Entwicklung in der Praxis
Everything-as-code – Polyglotte Entwicklung in der PraxisQAware GmbH
 
How You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionHow You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionBoldRadius Solutions
 
Creating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneCreating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneGary Wisniewski
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWebDave Bouwman
 
Everything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebEverything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebJames Rakich
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrMichael Enslow
 
Introduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopIntroduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopMark Rackley
 
AFUP Lorraine - Symfony Webpack Encore
AFUP Lorraine - Symfony Webpack EncoreAFUP Lorraine - Symfony Webpack Encore
AFUP Lorraine - Symfony Webpack EncoreEngineor
 
Sap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit SetupSap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit Setupwlacaze
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile DevelopmentGabriele Lana
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budgetDavid Lukac
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsMike Brittain
 
JavaScript For People Who Don't Code
JavaScript For People Who Don't CodeJavaScript For People Who Don't Code
JavaScript For People Who Don't CodeChristopher Schmitt
 
Intro To Django
Intro To DjangoIntro To Django
Intro To DjangoUdi Bauman
 
Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toilAmbassador Labs
 

Similar to Developing faster than ever (Liferay DEVCON 2017) (20)

Ruby For Startups
Ruby For StartupsRuby For Startups
Ruby For Startups
 
Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
Buildingsocialanalyticstoolwithmongodb
 
Everything-as-code – Polyglotte Entwicklung in der Praxis
Everything-as-code – Polyglotte Entwicklung in der PraxisEverything-as-code – Polyglotte Entwicklung in der Praxis
Everything-as-code – Polyglotte Entwicklung in der Praxis
 
How You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionHow You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in Production
 
Creating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneCreating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with Chaperone
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
 
Everything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebEverything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the Web
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking Modernizr
 
Introduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopIntroduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint Workshop
 
AFUP Lorraine - Symfony Webpack Encore
AFUP Lorraine - Symfony Webpack EncoreAFUP Lorraine - Symfony Webpack Encore
AFUP Lorraine - Symfony Webpack Encore
 
Sap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit SetupSap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit Setup
 
Always on! Or not?
Always on! Or not?Always on! Or not?
Always on! Or not?
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile Development
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budget
 
Terraform 101
Terraform 101Terraform 101
Terraform 101
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty Details
 
JavaScript For People Who Don't Code
JavaScript For People Who Don't CodeJavaScript For People Who Don't Code
JavaScript For People Who Don't Code
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toil
 

More from Sébastien Le Marchand

Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...Sébastien Le Marchand
 
Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Sébastien Le Marchand
 
Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Sébastien Le Marchand
 
Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Sébastien Le Marchand
 
Let’s discover and extend the Content Dashboard - /dev/24 2020
Let’s discover and extendthe Content Dashboard - /dev/24 2020Let’s discover and extendthe Content Dashboard - /dev/24 2020
Let’s discover and extend the Content Dashboard - /dev/24 2020Sébastien Le Marchand
 
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Sébastien Le Marchand
 
Liferay Gogo Scripts - Liferay France User Group - meetup #13
Liferay Gogo Scripts -  Liferay France User Group - meetup #13Liferay Gogo Scripts -  Liferay France User Group - meetup #13
Liferay Gogo Scripts - Liferay France User Group - meetup #13Sébastien Le Marchand
 
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Sébastien Le Marchand
 
Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Sébastien Le Marchand
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Sébastien Le Marchand
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016Sébastien Le Marchand
 
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchPhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchSébastien Le Marchand
 
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinUsing MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinSébastien Le Marchand
 
Les2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataLes2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataSébastien Le Marchand
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferaySébastien Le Marchand
 

More from Sébastien Le Marchand (16)

Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
 
Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021
 
Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021
 
Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020
 
Let’s discover and extend the Content Dashboard - /dev/24 2020
Let’s discover and extendthe Content Dashboard - /dev/24 2020Let’s discover and extendthe Content Dashboard - /dev/24 2020
Let’s discover and extend the Content Dashboard - /dev/24 2020
 
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
 
Liferay Gogo Scripts - Liferay France User Group - meetup #13
Liferay Gogo Scripts -  Liferay France User Group - meetup #13Liferay Gogo Scripts -  Liferay France User Group - meetup #13
Liferay Gogo Scripts - Liferay France User Group - meetup #13
 
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
 
Recap Liferay France Symposium 2018
Recap Liferay France Symposium 2018Recap Liferay France Symposium 2018
Recap Liferay France Symposium 2018
 
Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
 
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchPhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
 
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinUsing MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
 
Les2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataLes2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_data
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferay
 

Recently uploaded

Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀DianaGray10
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsPaul Groth
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsExpeed Software
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...Product School
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...Sri Ambati
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsVlad Stirbu
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backElena Simperl
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Thierry Lestable
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupCatarinaPereira64715
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform EngineeringJemma Hussein Allen
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
 

Recently uploaded (20)

Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 

Developing faster than ever (Liferay DEVCON 2017)