SlideShare a Scribd company logo
1 of 71
Download to read offline
1 • 8-November-23
2 • 8-November-23
Picnic and its code quality
1
Introduction of Error Prone and Refaster
2
Workshop 1 - Initial setup
3
Workshop 2 - Refaster
4
Agenda
Workshop 3 - Error Prone
5
Using Error Prone in practice!
6
3 • 8-November-23
Picnic
4 • 8-November-23
Code quality
5 • 8-November-23
Excellent code quality
Good architecture
Review process
Bugs and uniformity
Automation
6 • 8-November-23
Parkinson's law of triviality
7 • 8-November-23
Code reviews and discussions
8 • 8-November-23
Tools
Google/google-java-format
Reformats Java source code to comply
with Google Java Style.
checkstyle/checkstyle
Helps programmers write Java code
that adheres to a coding standard.
spotbugs/spotbugs
A tool for static analysis to look
for bugs in Java code.
SonarSource/sonarqube
Continuous Inspection.
9 • 8-November-23
Picnic and its code quality
1
Introduction of Error Prone and Refaster
2
Workshop 1 - Initial setup
3
Workshop 2 - Refaster
4
Agenda
Workshop 3 - Error Prone
5
Using Error Prone in practice!
6
10 • 8-November-23
Open-source static analysis
Compiler plugin
Powerful
500+ Error Prone checks
Complex
Error Prone
Google/error-prone
Catch common Java mistakes
as compile-time errors
11 • 8-November-23
Refaster
Define refactorings with templates.
becomes
12 • 8-November-23
Demo
Let’s demonstrate!
https://github.com/rickie/error-prone-demo
13 • 8-November-23
Maven profile 1
https://errorprone.info/docs/flags
14 • 8-November-23
Maven profile 2
15 • 8-November-23
Demo
Let’s demonstrate!
https://github.com/rickie/error-prone-demo
16 • 8-November-23
Bug patterns
https://errorprone.info/bugpatterns
17 • 8-November-23
Error Prone as superpower
18 • 8-November-23
Error Prone as superpower
Input:
Output:
19 • 8-November-23
Workshop planning
1. Setting up the project
2. Refaster rules
3. Error Prone checks
20 • 8-November-23
Picnic and its code quality
1
Introduction of Error Prone and Refaster
2
Workshop 1 - Initial setup
3
Workshop 2 - Refaster
4
Agenda
Workshop 3 - Error Prone
5
Using Error Prone in practice!
6
21 • 8-November-23
At Picnic we take it one step further!
22 • 8-November-23
Picnic open-sourced: Error Prone Support!
800+ Refaster rules
40+ Error Prone bug checks
https://error-prone.picnic.tech
23 • 8-November-23
Error Prone BugPattern
24 • 8-November-23
Error Prone BugPattern
25 • 8-November-23
Picnic’s Error Prone Support
Run Refaster rules from classpath
Test support for Refaster rules
Improved reporting of Refaster rules
Documentation website
https://error-prone.picnic.tech
26 • 8-November-23
Error Prone Support website
https://error-prone.picnic.tech
27 • 8-November-23
Let’s start with the setup!
PicnicSupermarket
error-prone-support
Error Prone extensions:
extra bug checkers and a large battery of
Refaster rules.
branch: workshop
28 • 8-November-23
Picnic and its code quality
1
Introduction of Error Prone and Refaster
2
Workshop 1 - Initial setup
3
Workshop 2 - Refaster
4
Agenda
Workshop 3 - Error Prone
5
Using Error Prone in practice!
6
29 • 8-November-23
Deep dive Refaster
- Background information
- Goals
- How does Refaster work?
- Advanced features
30 • 8-November-23
Refaster
- 2015 - Louis Wasserman (source)
- Two tools
- Closed source
31 • 8-November-23
Refaster rules availability
32 • 8-November-23
Deep dive Refaster
Goals of Refaster (source):
- Scalability
- Expressiveness
- Usability
When to use Refaster? (docs)
- Method A to method B.
- Migrate a fluent sequence of method invocations to some other
pattern.
- Migrate a sequence of consecutive statements to an alternative.
33 • 8-November-23
Running Refaster
34 • 8-November-23
Running Refaster - The Picnic Way
Link to an example configuration in Error Prone Support
35 • 8-November-23
Running Refaster - The Picnic Way
Refaster runner - `pom.xml` in Error Prone Support
36 • 8-November-23
Refaster @ Picnic
37 • 8-November-23
Refaster @ Picnic
38 • 8-November-23
Advanced Refaster features
39 • 8-November-23
Multiple
`@BeforeTemplate`s
40 • 8-November-23
Refaster#anyOf
41 • 8-November-23
@AlsoNegation
42 • 8-November-23
Import policies
IMPORT_TOP_LEVEL
IMPORT_CLASS_DIRECTLY
STATIC_IMPORT_ALWAYS
43 • 8-November-23
Block Template
44 • 8-November-23
@Placeholder
45 • 8-November-23
Argument types
46 • 8-November-23
Workshop part 2 - Refaster
30 minutes
Workshop README
Live demo!
Tip: use the slides
Once you are done: commit + push
47 • 8-November-23
Let’s inspect the changes!
48 • 8-November-23
Picnic and its code quality
1
Introduction of Error Prone and Refaster
2
Workshop 1 - Initial setup
3
Workshop 2 - Refaster
4
Agenda
Workshop 3 - Error Prone
5
Using Error Prone in practice!
6
49 • 8-November-23
Deep dive Error Prone
- Background
- How to write a BugPattern?
- Automatically fixing code
- How to test a BugPattern?
50 • 8-November-23
Error Prone background
- 2012 - Edward Aftandilian
- Code review and unit testing
- Subclass JavaCompiler
- CompilationUnit level
Source: Error Prone paper
OpenRewrite docs
51 • 8-November-23
Rules for an Error Prone check
1. The bug should be easy to understand.
2. The fix should be easy to make.
3. No false positives.
4. The bug should represent a correctness issue.
5. The bug should occur with a small but noticeable frequency.
https://errorprone.info/docs/criteria
52 • 8-November-23
How does Error Prone work?
Java code Abstract Syntax Tree Tree Node
53 • 8-November-23
Abstract Syntax Tree
54 • 8-November-23
Abstract Syntax Tree
55 • 8-November-23
Creating a BugChecker
56 • 8-November-23
Automatically fixing code!
Flagging vs. Fixing
57 • 8-November-23
Automatically fixing code!
58 • 8-November-23
Testing our BugChecker
59 • 8-November-23
Testing our
BugChecker
60 • 8-November-23
Refaster vs. Error Prone
Easy: work with
concrete syntax
Complex: AST
manipulation code
Limited
expressiveness
Full AST available
Refactoring only Also flags
without suggestions
61 • 8-November-23
Workshop part 3 - Error Prone
45 minutes
Live demo
5 assignments
Workshop README
62 • 8-November-23
Picnic and its code quality
1
Introduction of Error Prone and Refaster
2
Workshop 1 - Initial setup
3
Workshop 2 - Refaster
4
Agenda
Workshop 3 - Error Prone
5
Using Error Prone in practice!
6
63 • 8-November-23
Error Prone @ Picnic
Common configuration
./patch.sh
Continuous Integration
64 • 8-November-23
Applying Error Prone Support @ Picnic
Introducing:
- all Refaster rules
- all Error Prone checks
Approach
Perspective
https://error-prone.picnic.tech
65 • 8-November-23
Applying Error Prone Support @ Picnic
60+ PRs spread over 40+ Java repositories
33.665 insertions (+) 31.281 deletions (-)
66 • 8-November-23
Applying Error Prone Support @ Picnic
67 • 8-November-23
Applying Error Prone Support @ Picnic
68 • 8-November-23
Current state of Error Prone Support
People contributing ideas (from reviews)
40+ contributors
Stickers
Contributions?
Adoption
69 • 8-November-23
In summary
Two perspectives:
- Happy developers!
- Platform team or configuration
maintainers.
Automatically fix
One bug at a time
join.picnic.app
blog.picnic.nl
71 • 8-November-23
Unsure about next steps?
Feel free to reach out!
- https://error-prone.picnic.tech
- https://github.com/rickie/error-prone-demo - Demo code
Stephan Schroevers - stephan.schroevers@teampicnic.com
GitHub: https://github.com/Stephan202
Rick Ossendrijver - rick.ossendrijver@teampicnic.com
GitHub: https://github.com/rickie
Twitter: rick_ossies
We’re open to PRs ;)

More Related Content

Similar to EPS Workshop JFall - 1.0

Can We Automatically Generate Class Comments in Pharo?
Can We Automatically Generate Class Comments in Pharo?Can We Automatically Generate Class Comments in Pharo?
Can We Automatically Generate Class Comments in Pharo?Pooja Rani
 
MuleSoft_Meetup_Brisbane_2022-06-01_SonarQube_CataloguingAPIs.pptx
MuleSoft_Meetup_Brisbane_2022-06-01_SonarQube_CataloguingAPIs.pptxMuleSoft_Meetup_Brisbane_2022-06-01_SonarQube_CataloguingAPIs.pptx
MuleSoft_Meetup_Brisbane_2022-06-01_SonarQube_CataloguingAPIs.pptxBrianFraser29
 
PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux Neotys
 
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Puppet
 
Testing your puppet code
Testing your puppet codeTesting your puppet code
Testing your puppet codeJulien Pivotto
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using JenkinsRogue Wave Software
 
Android asynchronous programming
Android asynchronous programmingAndroid asynchronous programming
Android asynchronous programmingNhan Cao
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineeringgaoliang641
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automationElias Nogueira
 
Building Awesome APIs with Lumen
Building Awesome APIs with LumenBuilding Awesome APIs with Lumen
Building Awesome APIs with LumenKit Brennan
 
Automated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and JenkinsAutomated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and Jenkinswalkerchang
 
20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorialgarrett honeycutt
 
Master class in modern Java
Master class in modern JavaMaster class in modern Java
Master class in modern JavaMiro Cupak
 
Triantafyllia Voulibasi
Triantafyllia VoulibasiTriantafyllia Voulibasi
Triantafyllia VoulibasiISSEL
 
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...SmartBear
 
Reproducibility with Revolution R Open
Reproducibility with Revolution R OpenReproducibility with Revolution R Open
Reproducibility with Revolution R OpenRevolution Analytics
 

Similar to EPS Workshop JFall - 1.0 (20)

Can We Automatically Generate Class Comments in Pharo?
Can We Automatically Generate Class Comments in Pharo?Can We Automatically Generate Class Comments in Pharo?
Can We Automatically Generate Class Comments in Pharo?
 
MuleSoft_Meetup_Brisbane_2022-06-01_SonarQube_CataloguingAPIs.pptx
MuleSoft_Meetup_Brisbane_2022-06-01_SonarQube_CataloguingAPIs.pptxMuleSoft_Meetup_Brisbane_2022-06-01_SonarQube_CataloguingAPIs.pptx
MuleSoft_Meetup_Brisbane_2022-06-01_SonarQube_CataloguingAPIs.pptx
 
PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux
 
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
 
Testing your puppet code
Testing your puppet codeTesting your puppet code
Testing your puppet code
 
Bug zillatestopiajenkins
Bug zillatestopiajenkinsBug zillatestopiajenkins
Bug zillatestopiajenkins
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Android asynchronous programming
Android asynchronous programmingAndroid asynchronous programming
Android asynchronous programming
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
 
Building Awesome APIs with Lumen
Building Awesome APIs with LumenBuilding Awesome APIs with Lumen
Building Awesome APIs with Lumen
 
Ui Testing with Ghost Inspector
Ui Testing with Ghost InspectorUi Testing with Ghost Inspector
Ui Testing with Ghost Inspector
 
Automated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and JenkinsAutomated Testing Environment by Bugzilla, Testopia and Jenkins
Automated Testing Environment by Bugzilla, Testopia and Jenkins
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
 
20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial
 
Master class in modern Java
Master class in modern JavaMaster class in modern Java
Master class in modern Java
 
Triantafyllia Voulibasi
Triantafyllia VoulibasiTriantafyllia Voulibasi
Triantafyllia Voulibasi
 
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
The API Lifecycle Series: Evolving API Development and Testing from Open Sour...
 
Reproducibility with Revolution R Open
Reproducibility with Revolution R OpenReproducibility with Revolution R Open
Reproducibility with Revolution R Open
 

Recently uploaded

Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 

Recently uploaded (20)

Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 

EPS Workshop JFall - 1.0