SlideShare a Scribd company logo
1 of 123
Download to read offline
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

More Related Content

What's hot

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
 

What's hot (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
 

Similar to 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
 

Similar to 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
 

More from 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
 

More from 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
 

Recently uploaded

Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
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
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
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
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
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
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
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
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
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
 
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
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 

Recently uploaded (20)

Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
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
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
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 - ...
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
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...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
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...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
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)
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 

Solutions for when documentation fails