SlideShare a Scribd company logo
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 parenting
Abraham 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 2012
Nick 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 Developers
Burr Sutter
 
不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon
sam 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 strategies
DanHeidinga
 
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
Mohammed A. Imran
 
Devoxx 2014 Monitoring
Devoxx 2014 Monitoring Devoxx 2014 Monitoring
Devoxx 2014 Monitoring
Claude Falguiere
 
Mitigating data theft_in_android
Mitigating data theft_in_androidMitigating data theft_in_android
Mitigating data theft_in_android
Rashmi Bhandari
 
Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009Agile Infrastructure - Agile 2009
Agile Infrastructure - Agile 2009
Andrew Shafer
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
Ariya 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 2018
Matt 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 2023
Anthony Dahanne
 
Iz Pack
Iz PackIz Pack
Iz Pack
Inria
 
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
jbandi
 
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
Ray 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 Way
Yusuf Hadiwinata Sutandar
 
DevOps Indonesia #9 - DevSecOps
DevOps Indonesia #9 - DevSecOpsDevOps Indonesia #9 - DevSecOps
DevOps Indonesia #9 - DevSecOps
DevOps Indonesia
 
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
Hananto Wibowo Soenarto
 
[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
Daniel 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 Docker
Patrick Chanezon
 
Web Application Defences
Web Application DefencesWeb Application Defences
Web Application Defences
Damilola Longe, CISSP, CCSP, MSc
 
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
 
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...
Evolve The Adobe Digital Marketing Community
 
Troubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineersTroubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineers
Docker, 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 German
Adam 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 Inspection
Yu-Lun Chen
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniques
Red 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 Kubernetes
PetteriTeikariPhD
 

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
 
DevOps Indonesia #9 - DevSecOps
DevOps Indonesia #9 - DevSecOpsDevOps Indonesia #9 - DevSecOps
DevOps Indonesia #9 - DevSecOps
 
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
 
[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.0
Martijn Dashorst
 
From Floppy Disks to Cloud Deployments
From Floppy Disks to Cloud DeploymentsFrom Floppy Disks to Cloud Deployments
From Floppy Disks to Cloud Deployments
Martijn Dashorst
 
SOLID principles
SOLID principlesSOLID principles
SOLID principles
Martijn 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 PostgreSQL
Martijn 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 8
Martijn Dashorst
 
Code review drinking game
Code review drinking gameCode review drinking game
Code review drinking game
Martijn Dashorst
 
Java Serialization Deep Dive
Java Serialization Deep DiveJava Serialization Deep Dive
Java Serialization Deep Dive
Martijn Dashorst
 
Code review drinking game
Code review drinking gameCode review drinking game
Code review drinking game
Martijn Dashorst
 
Scrum: van praktijk naar onderwijs
Scrum: van praktijk naar onderwijsScrum: van praktijk naar onderwijs
Scrum: van praktijk naar onderwijs
Martijn 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
 
De schone coder
De schone coderDe schone coder
De schone coder
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 tree
Martijn Dashorst
 
The State of Wicket
The State of WicketThe State of Wicket
The State of Wicket
Martijn Dashorst
 
Wicket 2010
Wicket 2010Wicket 2010
Wicket 2010
Martijn Dashorst
 
Vakmanschap is meesterschap
Vakmanschap is meesterschapVakmanschap is meesterschap
Vakmanschap is meesterschap
Martijn Dashorst
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in production
Martijn Dashorst
 
Wicket In Action - oredev2008
Wicket In Action - oredev2008Wicket In Action - oredev2008
Wicket In Action - oredev2008
Martijn Dashorst
 
Guide To Successful Graduation at Apache
Guide To Successful Graduation at ApacheGuide To Successful Graduation at Apache
Guide To Successful Graduation at Apache
Martijn Dashorst
 
Wicket In Action
Wicket In ActionWicket In Action
Wicket In Action
Martijn 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

DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
Hironori Washizaki
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 

Recently uploaded (20)

DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 

Solutions for when documentation fails