SlideShare une entreprise Scribd logo
1  sur  123
Télécharger pour lire hors ligne
SOLUTIONS FOR WHEN
DOCUMENTATION
AVOIDANCE
MARTIJN DASHORST
TOPICUS
FAILS
MARTIJN
DASHORST
TOPICUS

PARNASSYS, SOMTODAY, EDUARTE, ZIEN!VO,
IRIS+,TEACHER, CONFERENCE ORGANIZER
ENGINEER

JAVA, DOCKER, ECLIPSE, MAVEN, WICKET
HOBBIES

LEGO, STAR TREK, STAR WARS, PODCASTS
@DASHORST
LET'S DISCUSS THE
RELATIONSHIP

BETWEEN DEVELOPERS
AND DOCUMENTATION
WHO USES
DOCUMENTATION?✋
CHALLENGES AT WORK
STACKOVERFLOW
DEVELOPER SURVEY 2016
CHALLENGES AT WORK
TRYING TO BE NICE 8%
12%
STACKOVERFLOW
DEVELOPER SURVEY
2016
CHALLENGES AT WORK
TRYING TO BE NICE
POOR INFRASTRUCTURE
8%
12%
STACKOVERFLOW
DEVELOPER SURVEY
2016
STACKOVERFLOW
DEVELOPER SURVEY
2016
CHALLENGES AT WORK
TRYING TO BE NICE
POOR INFRASTRUCTURE
UNSPECIFIC SPECIFICATIONS
: : : : : : : : : : :
: : : : : : : : : : :
8%
12%
34%
35%
35%
STACKOVERFLOW
DEVELOPER SURVEY
2016
CHALLENGES AT WORK
TRYING TO BE NICE
POOR INFRASTRUCTURE
UNSPECIFIC SPECIFICATIONS
: : : : : : : : : : :
POOR DOCUMENTATION
UNREALISIC EXPECTATIONS
: : : : : : : : : : :
8%
12%
34%
35%
35%
IMPORTANT FACTORS IN APIs
PROGRAMMABLE WEB

SURVEY

2013
PRICE
: : : : : : : : : : :
IMPORTANT FACTORS IN APIs
PROGRAMMABLE WEB

SURVEY

2013
SERVICE RESPONSIVENESS/PERFORMANCE
SERVICE AVAILABLITY/UPTIME
: : : : : : : : : : :
PRICE
: : : : : : : : : : :
IMPORTANT FACTORS IN APIs
PROGRAMMABLE WEB

SURVEY

2013
SERVICE RESPONSIVENESS/PERFORMANCE
SERVICE AVAILABLITY/UPTIME
COMPLETE AND ACCURATE DOCUMENTATION
: : : : : : : : : : :
PRICE
: : : : : : : : : : :
WHO WRITES
DOCUMENTATION?✋
WHO ENJOYS IT?✋
IT'S COMPLICATED
The lack of
documentation

can lead to meetings
– Peter Hilton
JFALL 2016
LEAVE YOUR PHONE# IN EVERY SOURCE FILE
JUST-IN-TIME DOCUMENTATION
WRITE GREAT CODE, COMMENT IT
WRITE JUST ENOUGH DOCS, BUT NOT MORE
CASES WHEN
DOCUMENTATION
AVOIDANCE FAILS
user manual
api guide
onboarding guide
code comments
design docs
...
everywhere a user meets development
YOU NEED DOCUMENTATION
everywhere a user meets development
YOU NEED DOCUMENTATION
a new team member is a user
ALSO,
OPTIONS FOR
WRITING
DOCUMENTATION
CODE
good naming
good structure
comments
javadocis documentation
up-to-date
CODEas documentation fails when > 30k
good naming
good structure
comments
javadoc
up-to-date
JAVADOC
good for APIs
use overview.html
use package.html
no stupid javadoc
up-to-date
*drive
google microsoft

icloud sharepoint
"f-share"
WIKIs
nobody got fired for
buying atlassian
WIKIs are where
documentation
goes to die
– Joseph Wilk
CODE and
JAVADOC
mostly
up-to-date
CODE and
JAVADOC
and DOCS
up-to-date?
WHAT IF WE COULD USE
DEV TOOLS FOR
DOCUMENTATION?
git	
maven	
jenkins	
docker
1. docs → git
2. docs → build tools
3. docs → deployment tools
GIT ❤ TEXT FILES
PLAIN TEXT OPTIONS
markdown
docbook
asciidoctor
DITAA HTML
PLAIN TEXT OPTIONS
markdown
docbook
asciidoctor
DITAA HTML#
#
#
MARKDOWN
+ light weight
+ easy to write
+ easy to read
- limited
A	First	Level	Header	
====================	
A	Second	Level	Header	
---------------------	
Now	is	the	time	for	all	good	men	to	come	to	
the	aid	of	their	country.	This	is	just	a	
regular	paragraph.	
The	quick	brown	fox	jumped	over	the	lazy	
dog's	back.	
###	Header	3	
>	This	is	a	blockquote.	
>		
>	This	is	the	second	paragraph	in	the	blockquote.	
>	
>	##	This	is	an	H2	in	a	blockquote
FIRST THERE WAS MARKDOWN
Markdown(John Gruber)
http://daringfireball.net/projects/markdown
THEN THERE WAS MARKDOWN
Markdown
Github Flavored
Markdown Extra
MultiMarkdown
(John Gruber)
THEN THERE WAS MARKDOWN
Markdown
Github Flavored
Markdown Extra
MultiMarkdown
CommonMark
https://xkcd.com/927/
ASCIIDOCTOR
+ medium weight
+ easy to write
+ easy to read
+ comprehensive
+ maven support
+ 1 version
#	A	First	Level	Header	
##	A	Second	Level	Header	
Now	is	the	time	for	all	good	men	to	come	to	
the	aid	of	their	country.	This	is	just	a	
regular	paragraph.	
The	quick	brown	fox	jumped	over	the	lazy	
dog's	back.	
###	Header	3	
>	This	is	a	blockquote.	
>		
>	This	is	the	second	paragraph	in	the	blockquote.	
>	
>	##	This	is	an	H2	in	a	blockquote
ASCIIDOCTOR
+ Table of contents
+ Output to epub, pdf, html, docbook
+ Bibliography
+ Footnotes

+ Macros

+ Substitutions
ASCIIDOCTOR
+ file inclusions:
[source,java]	
----	
include::org/asciidoctor/Asciidoctor.java[lines=5..10]	
----
ASCIIDOCTOR
+ code callouts
[source,xml]	
----	
include::pom.xml	
----	
<1>	Adds	Arquillian	Cube	
<2>	From	the	point	of	view
PLAIN TEXT CHOICES
markdown asciidoctor
README:1 EVERYTHING ELSE:
1
github does support README.adoc using asciidoctor format
1. docs → git
2. docs → build tools
3. docs → deployment tools
maven
maven
+
guide.html
guide.pdf
=
1. docs → git
2. docs → build tools
3. docs → deployment tools
guide.pdf +
guide.html
=+ maven
mavendockerhttpd
profit
result
WHAT IF WE COULD USE
DEV TOOLS FOR A 

USER MANUAL?
text and screenshots
USER MANUAL:
text and screenshots
USER MANUAL:
screenshots
considered harmful
I have made this longer than usual because I
have not had time to make it shorter.
I have made this longer than usual because I
have not had time to make it shorter.
screenshots
are always
out-of-date
Windows™ 10 Admin Guide
1. Logging in
An administrator is someone who can make changes on a computer
that will affect other users of the computer. Administrators can change
security settings, install software and hardware, access all files on the
computer, and make changes to other user accounts. To log on as an
administrator, you need to have a user account on the computer with
an Administrator account type.
If your account type is not Administrator, then you cannot log on as an
administrator unless you know the user name password for another
«intentionally left blank for dramatic purposes»
UP-TO-DATE 

USER MANUAL
CASE STUDY
Identity & access management
- 2FA for critical infrastructure
- Localized authorization
- 4 eyes principle
- Installs as software appliance
- Web App
- Native mobile apps
vaults for secure
team shares4 eyes principle
85PAGES
88IMAGES
USER
MANUAL
the 85 pages are
written in asciidoc,
converted using
asciidoctor(all text is written by a human)
the 88 screenshots
are captured during
testing, achieving
90% code coverage
100%automated
arquillian
maven
mavenaShotgraphene
TOOLS USED FOR DOCUMENTATION
arquillian
maven
mavenaShotgraphene
a functional, integration

and acceptance test platform
http://arquillian.org/
modules
a functional, integration

and acceptance test platform
http://arquillian.org/
deploymentcontainers packaging injection
webdriver
http://arquillian.org/
integrationrecording
wildfly cube
tomcat
etcglassfish
Captures screenshot
on test failure with
Arquillian Recorder
http://arquillian.org/
recording
Skips a test

if the issue is not done.
Runs a test

if the issue is done.
Closes a issue 

if the test is successful
http://arquillian.org/
integration
@Test	
@Jira("ARQ-1907")	
public	void	test1()	{	
}	
@Test	
@Github("123")	
public	void	test2()	{	
}
@RunWith(Arquillian.class)
public class LoginTest {
@Drone
private WebDriver browser;
@Test
public void step1LogIn() {
}
}
Anatomy of a test case
1
3
2
@RunWith(Arquillian.class)
public class LoginTest {
@Drone
private WebDriver browser;
@Test
public void step1LogIn() {
}
}
Anatomy of a test case
1
3
2
@RunWith(Arquillian.class)
public class LoginTest {
@Drone
private WebDriver browser;
@Test
public void step1LogIn() {
}
}
Anatomy of a test case
1
3
2
@Test
public void login() {
browser
.navigate()
.to("https://test.com/login");
browser
.findElement(By.name("username"))
.sendKeys("bertjan");
Implement test case
1
3
2
4
5
@Test
public void login() {
browser
.navigate()
.to("https://test.com/login");
browser
.findElement(By.name("username"))
.sendKeys("bertjan");
Implement test case
1
3
2
4
5
browser
.findElement(By.name("username"))
.sendKeys("bertjan");
browser
.findElement(By.name("password"))
.sendKeys("schrijver");
Implement test case
1
3
2
4
5
browser
.findElement(By.name("password"))
.sendKeys("schrijver");
browser
.findElement(By.id("login"))
.click();
Implement test case
1
3
2
4
5
browser
.findElement(By.id("login"))
.click();
Assert.assertEquals("home",
browser
.findElement(By.tagName("title"))
.text());
}
Implement test case
1
3
2
4
5
arquillian
maven
mavenaShotgraphene
a wrapper for Selenium/
WebDriver
graphenehttp://arquillian.org/arquillian-graphene/
Page Objects
encapsulate
requests and HTML
https://martinfowler.com/bliki/PageObject.html
browser
.navigate()
.to("https://test.com/login");
Using Page Objects
browser
.navigate()
.to("https://test.com/login");
Using Page Objects
LoginPage loginPage =
Graphene.goTo(LoginPage.class);
browser
.findElement(By.name("username"))
.sendKeys("bertjan");
browser
.findElement(By.name("password"))
.sendKeys("schrijver");
browser.findElement(By.id("login")).click();
Using Page Objects
browser
.findElement(By.name("username"))
.sendKeys("bertjan");
browser
.findElement(By.name("password"))
.sendKeys("schrijver");
browser.findElement(By.id("login")).click();
loginPage.login("bertjan", "schrijver");
Using Page Objects
WEBDRIVER
@Test
public void login() {
browser
.navigate()
.to("https://test.com/login");
browser
.findElement(By.name("username")
.sendKeys("bertjan");
browser
.findElement(By.name("password")
.sendKeys("schrijver");
browser
.findElement(By.id("login"))
.click();
}
@Test
public void login() {
LoginPage loginPage =
Graphene.goTo(LoginPage.class);
loginPage
.login("bertjan", "schrijver");
}
GRAPHENE
arquillian
maven
mavenaShotgraphene
WebDriver Screenshot utility.
Take screenshots, crop, prettify,
compare.
aShothttps://github.com/yandex-qatools/ashot
take full
screenshots

aShothttps://github.com/yandex-qatools/ashot
Screenshot screenshot =
new AShot().takeScreenshot(browser);
Path targetFile = Paths.get(
"target/screenshots", name + ".png");
ImageIO.write(
screenshot.getImage(),
"png",
targetFile.toFile());
Take a Screenshot
1
3
2
Screenshot screenshot =
new AShot().takeScreenshot(browser);
Path targetFile = Paths.get(
"target/screenshots", name + ".png");
ImageIO.write(
screenshot.getImage(),
"png",
targetFile.toFile());
Take a Screenshot
1
3
2
Screenshot screenshot =
new AShot().takeScreenshot(browser);
Path targetFile = Paths.get(
"target/screenshots", name + ".png");
ImageIO.write(
screenshot.getImage(),
"png",
targetFile.toFile());
Take a Screenshot
1
3
2
compose
partials
aShothttps://github.com/yandex-qatools/ashot
Screenshot screenshot =
new AShot()
.takeScreenshot(browser,
browser.findElement(
By.id("username")));
Screenshot Composition
1
3
2
Screenshot screenshot =
new AShot()
.takeScreenshot(browser,
browser.findElement(
By.id("username")));
Screenshot Composition
1
3
2
requires JQuery intarget page
Screenshot screenshot =
new AShot()
.imageCropper(new IndentCropper(50))
.takeScreenshot(browser,
browser.findElement(
By.id("username")));
Screenshot Composition
1
3
2
new AShot().takeScreenshot(browser,
browser.findElements(
ByJQuery.selector(
"input[name='username'],
a:contains('Sign in')")));
Screenshot Composition
1
3
2
new AShot().takeScreenshot(browser,
browser.findElements(
ByJQuery.selector(
"input[name='username'],
a:contains('Sign in')")));
Screenshot Composition
1
3
2
PLURAL!
arquillian
maven
mavenaShotgraphene
keyhub-backend
Maven module dependencies
war
keyhub-tests
keyhub-backend
Maven module dependencies
war
keyhub-tests
keyhub-backend
keyhub-manual
Maven module dependencies
war
war
keyhub-tests
keyhub-backend
keyhub-manual
keyhub-app
Maven module dependencies
war
war
graphene aShotarquillian
++ =
screenshots
Maven module: keyhub-tests
maven
maven
+ =
screenshots
maven test module
+ maven
maven
+
manual.html
manual.pdf
=
manual.adoc
maven manual module
+ maven
maven
manual.war=
manual.html
manual.pdf
maven manual module
application.war +
manual.war
=+ maven
mavendockerwildfy
profit
maven app module
THE
RESULT
AN

UP-TO-DATE

USER MANUAL
THE
RESULT
THE
RESULT
THE
RESULT 90%TEST COVERAGE
AUTOMATE
ALL THE THINGS!
$
$
%
$
%
&
SOLUTIONS FOR WHEN
DOCUMENTATION
AVOIDANCEFAILS
1. use plain text
2. keep code and docs together
3. integrate docs into your dev process
4. automate all the things
writethedocs.org
asciidoctor.org
arquillian.org
maven.apache.org
sources
THANK YOU!
@dashorst
QUESTIONS?
@dashorst

Contenu connexe

Tendances

Smart Sheriff, Dumb Idea, the wild west of government assisted parenting
Smart Sheriff, Dumb Idea, the wild west of government assisted parentingSmart Sheriff, Dumb Idea, the wild west of government assisted parenting
Smart Sheriff, Dumb Idea, the wild west of government assisted parentingAbraham Aranguren
 
Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012
Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012
Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012Nick Galbreath
 
Cloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersCloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersBurr Sutter
 
不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopconsam chiu
 
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Burr Sutter
 
Migrate Early, Migrate Often: JDK release cadence strategies
Migrate Early, Migrate Often: JDK release cadence strategiesMigrate Early, Migrate Often: JDK release cadence strategies
Migrate Early, Migrate Often: JDK release cadence strategiesDanHeidinga
 
In graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challengesIn graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challengesMohammed A. Imran
 
Mitigating data theft_in_android
Mitigating data theft_in_androidMitigating data theft_in_android
Mitigating data theft_in_androidRashmi Bhandari
 
Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009Andrew Shafer
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitAriya Hidayat
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Matt Raible
 

Tendances (12)

Smart Sheriff, Dumb Idea, the wild west of government assisted parenting
Smart Sheriff, Dumb Idea, the wild west of government assisted parentingSmart Sheriff, Dumb Idea, the wild west of government assisted parenting
Smart Sheriff, Dumb Idea, the wild west of government assisted parenting
 
Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012
Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012
Continuous Deployment - The New #1 Security Feature, from BSildesLA 2012
 
Cloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersCloud State of the Union for Java Developers
Cloud State of the Union for Java Developers
 
不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon
 
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
 
Migrate Early, Migrate Often: JDK release cadence strategies
Migrate Early, Migrate Often: JDK release cadence strategiesMigrate Early, Migrate Often: JDK release cadence strategies
Migrate Early, Migrate Often: JDK release cadence strategies
 
In graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challengesIn graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challenges
 
Devoxx 2014 Monitoring
Devoxx 2014 Monitoring Devoxx 2014 Monitoring
Devoxx 2014 Monitoring
 
Mitigating data theft_in_android
Mitigating data theft_in_androidMitigating data theft_in_android
Mitigating data theft_in_android
 
Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018
 

Similaire à Solutions for when documentation fails

SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진VMware Tanzu Korea
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!Anthony Dahanne
 
CNCF Québec Meetup du 16 Novembre 2023
CNCF Québec Meetup du 16 Novembre 2023CNCF Québec Meetup du 16 Novembre 2023
CNCF Québec Meetup du 16 Novembre 2023Anthony Dahanne
 
Iz Pack
Iz PackIz Pack
Iz PackInria
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014jbandi
 
Developer Productivity with Forge, Java EE 6 and Arquillian
Developer Productivity with Forge, Java EE 6 and ArquillianDeveloper Productivity with Forge, Java EE 6 and Arquillian
Developer Productivity with Forge, Java EE 6 and ArquillianRay Ploski
 
Devops Indonesia - DevSecOps - The Open Source Way
Devops Indonesia - DevSecOps - The Open Source WayDevops Indonesia - DevSecOps - The Open Source Way
Devops Indonesia - DevSecOps - The Open Source WayYusuf Hadiwinata Sutandar
 
DevSecOps : The Open Source Way by Yusuf Hadiwinata
DevSecOps : The Open Source Way by Yusuf HadiwinataDevSecOps : The Open Source Way by Yusuf Hadiwinata
DevSecOps : The Open Source Way by Yusuf HadiwinataHananto Wibowo Soenarto
 
DevOps Indonesia #9 - DevSecOps
DevOps Indonesia #9 - DevSecOpsDevOps Indonesia #9 - DevSecOps
DevOps Indonesia #9 - DevSecOpsDevOps Indonesia
 
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
[RHFSeoul2017]6 Steps to Transform Enterprise Applications[RHFSeoul2017]6 Steps to Transform Enterprise Applications
[RHFSeoul2017]6 Steps to Transform Enterprise ApplicationsDaniel Oh
 
Containers and Developer Defined Data Centers - Evan Powell - Keynote in Bang...
Containers and Developer Defined Data Centers - Evan Powell - Keynote in Bang...Containers and Developer Defined Data Centers - Evan Powell - Keynote in Bang...
Containers and Developer Defined Data Centers - Evan Powell - Keynote in Bang...CodeOps Technologies LLP
 
Programming the world with Docker
Programming the world with DockerProgramming the world with Docker
Programming the world with DockerPatrick Chanezon
 
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...Henning Jacobs
 
Troubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineersTroubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineersDocker, Inc.
 
JavaScript & Enterprise BED-Con 2014 Berlin German
JavaScript & Enterprise BED-Con 2014 Berlin GermanJavaScript & Enterprise BED-Con 2014 Berlin German
JavaScript & Enterprise BED-Con 2014 Berlin GermanAdam Boczek
 
Using the SDACK Architecture on Security Event Inspection
Using the SDACK Architecture on Security Event InspectionUsing the SDACK Architecture on Security Event Inspection
Using the SDACK Architecture on Security Event InspectionYu-Lun Chen
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesRed Hat Developers
 
Deploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and KubernetesDeploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and KubernetesPetteriTeikariPhD
 

Similaire à Solutions for when documentation fails (20)

SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!
 
CNCF Québec Meetup du 16 Novembre 2023
CNCF Québec Meetup du 16 Novembre 2023CNCF Québec Meetup du 16 Novembre 2023
CNCF Québec Meetup du 16 Novembre 2023
 
Iz Pack
Iz PackIz Pack
Iz Pack
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014
 
Developer Productivity with Forge, Java EE 6 and Arquillian
Developer Productivity with Forge, Java EE 6 and ArquillianDeveloper Productivity with Forge, Java EE 6 and Arquillian
Developer Productivity with Forge, Java EE 6 and Arquillian
 
Devops Indonesia - DevSecOps - The Open Source Way
Devops Indonesia - DevSecOps - The Open Source WayDevops Indonesia - DevSecOps - The Open Source Way
Devops Indonesia - DevSecOps - The Open Source Way
 
DevSecOps : The Open Source Way by Yusuf Hadiwinata
DevSecOps : The Open Source Way by Yusuf HadiwinataDevSecOps : The Open Source Way by Yusuf Hadiwinata
DevSecOps : The Open Source Way by Yusuf Hadiwinata
 
DevOps Indonesia #9 - DevSecOps
DevOps Indonesia #9 - DevSecOpsDevOps Indonesia #9 - DevSecOps
DevOps Indonesia #9 - DevSecOps
 
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
[RHFSeoul2017]6 Steps to Transform Enterprise Applications[RHFSeoul2017]6 Steps to Transform Enterprise Applications
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
 
Containers and Developer Defined Data Centers - Evan Powell - Keynote in Bang...
Containers and Developer Defined Data Centers - Evan Powell - Keynote in Bang...Containers and Developer Defined Data Centers - Evan Powell - Keynote in Bang...
Containers and Developer Defined Data Centers - Evan Powell - Keynote in Bang...
 
Programming the world with Docker
Programming the world with DockerProgramming the world with Docker
Programming the world with Docker
 
Web Application Defences
Web Application DefencesWeb Application Defences
Web Application Defences
 
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
 
EVOLVE'16 | Keynote | Cat Reusswig | Taking Your AEM Implementation to The RO...
EVOLVE'16 | Keynote | Cat Reusswig | Taking Your AEM Implementation to The RO...EVOLVE'16 | Keynote | Cat Reusswig | Taking Your AEM Implementation to The RO...
EVOLVE'16 | Keynote | Cat Reusswig | Taking Your AEM Implementation to The RO...
 
Troubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineersTroubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineers
 
JavaScript & Enterprise BED-Con 2014 Berlin German
JavaScript & Enterprise BED-Con 2014 Berlin GermanJavaScript & Enterprise BED-Con 2014 Berlin German
JavaScript & Enterprise BED-Con 2014 Berlin German
 
Using the SDACK Architecture on Security Event Inspection
Using the SDACK Architecture on Security Event InspectionUsing the SDACK Architecture on Security Event Inspection
Using the SDACK Architecture on Security Event Inspection
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniques
 
Deploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and KubernetesDeploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and Kubernetes
 

Plus de Martijn Dashorst

HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0
HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0
HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0Martijn Dashorst
 
From Floppy Disks to Cloud Deployments
From Floppy Disks to Cloud DeploymentsFrom Floppy Disks to Cloud Deployments
From Floppy Disks to Cloud DeploymentsMartijn Dashorst
 
Converting 85% of Dutch Primary Schools from Oracle to PostgreSQL
Converting 85% of Dutch Primary Schools from Oracle to PostgreSQLConverting 85% of Dutch Primary Schools from Oracle to PostgreSQL
Converting 85% of Dutch Primary Schools from Oracle to PostgreSQLMartijn Dashorst
 
Whats up with wicket 8 and java 8
Whats up with wicket 8 and java 8Whats up with wicket 8 and java 8
Whats up with wicket 8 and java 8Martijn Dashorst
 
Java Serialization Deep Dive
Java Serialization Deep DiveJava Serialization Deep Dive
Java Serialization Deep DiveMartijn Dashorst
 
Scrum: van praktijk naar onderwijs
Scrum: van praktijk naar onderwijsScrum: van praktijk naar onderwijs
Scrum: van praktijk naar onderwijsMartijn Dashorst
 
Who Automates the Automators? (Quis Automatiet Ipsos Automates?)
Who Automates the Automators? (Quis Automatiet Ipsos Automates?)Who Automates the Automators? (Quis Automatiet Ipsos Automates?)
Who Automates the Automators? (Quis Automatiet Ipsos Automates?)Martijn Dashorst
 
Wicket 10 years and beyond
Wicket   10 years and beyond Wicket   10 years and beyond
Wicket 10 years and beyond Martijn Dashorst
 
Apache Wicket and Java EE sitting in a tree
Apache Wicket and Java EE sitting in a treeApache Wicket and Java EE sitting in a tree
Apache Wicket and Java EE sitting in a treeMartijn Dashorst
 
Vakmanschap is meesterschap
Vakmanschap is meesterschapVakmanschap is meesterschap
Vakmanschap is meesterschapMartijn Dashorst
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in productionMartijn Dashorst
 
Wicket In Action - oredev2008
Wicket In Action - oredev2008Wicket In Action - oredev2008
Wicket In Action - oredev2008Martijn Dashorst
 
Guide To Successful Graduation at Apache
Guide To Successful Graduation at ApacheGuide To Successful Graduation at Apache
Guide To Successful Graduation at ApacheMartijn Dashorst
 

Plus de Martijn Dashorst (20)

HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0
HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0
HTMX: Web 1.0 with the benefits of Web 2.0 without the grift of Web 3.0
 
From Floppy Disks to Cloud Deployments
From Floppy Disks to Cloud DeploymentsFrom Floppy Disks to Cloud Deployments
From Floppy Disks to Cloud Deployments
 
SOLID principles
SOLID principlesSOLID principles
SOLID principles
 
Converting 85% of Dutch Primary Schools from Oracle to PostgreSQL
Converting 85% of Dutch Primary Schools from Oracle to PostgreSQLConverting 85% of Dutch Primary Schools from Oracle to PostgreSQL
Converting 85% of Dutch Primary Schools from Oracle to PostgreSQL
 
Whats up with wicket 8 and java 8
Whats up with wicket 8 and java 8Whats up with wicket 8 and java 8
Whats up with wicket 8 and java 8
 
Code review drinking game
Code review drinking gameCode review drinking game
Code review drinking game
 
Java Serialization Deep Dive
Java Serialization Deep DiveJava Serialization Deep Dive
Java Serialization Deep Dive
 
Code review drinking game
Code review drinking gameCode review drinking game
Code review drinking game
 
Scrum: van praktijk naar onderwijs
Scrum: van praktijk naar onderwijsScrum: van praktijk naar onderwijs
Scrum: van praktijk naar onderwijs
 
Who Automates the Automators? (Quis Automatiet Ipsos Automates?)
Who Automates the Automators? (Quis Automatiet Ipsos Automates?)Who Automates the Automators? (Quis Automatiet Ipsos Automates?)
Who Automates the Automators? (Quis Automatiet Ipsos Automates?)
 
De schone coder
De schone coderDe schone coder
De schone coder
 
Wicket 10 years and beyond
Wicket   10 years and beyond Wicket   10 years and beyond
Wicket 10 years and beyond
 
Apache Wicket and Java EE sitting in a tree
Apache Wicket and Java EE sitting in a treeApache Wicket and Java EE sitting in a tree
Apache Wicket and Java EE sitting in a tree
 
The State of Wicket
The State of WicketThe State of Wicket
The State of Wicket
 
Wicket 2010
Wicket 2010Wicket 2010
Wicket 2010
 
Vakmanschap is meesterschap
Vakmanschap is meesterschapVakmanschap is meesterschap
Vakmanschap is meesterschap
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in production
 
Wicket In Action - oredev2008
Wicket In Action - oredev2008Wicket In Action - oredev2008
Wicket In Action - oredev2008
 
Guide To Successful Graduation at Apache
Guide To Successful Graduation at ApacheGuide To Successful Graduation at Apache
Guide To Successful Graduation at Apache
 
Wicket In Action
Wicket In ActionWicket In Action
Wicket In Action
 

Dernier

Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 

Dernier (20)

Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 

Solutions for when documentation fails