SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
The Final Frontier 
Martijn Verburg (@karianna) 
www.jclarity.com - @jclarity
My Background 
• Martijn Verburg (@karianna) 
– CEO at jClarity 
– Run Adopt a JSR & Adopt OpenJDK programs 
– Speaker, Author, Java Champion 
– aka "The Diabolical Developer" 
• As a former CTO… 
– Have seen *lots* of tools 
• As a CEO… 
– Part time coder, tools make or break my day
The Frontiers 
1. Programming Languages & Libraries 
2.IDEs 
3. Source Control 
4. Build and Deployment Tools 
5. Testing and Code Analysis Tools 
6. Performance Tools 
7. Collaboration 
8. Businesses 
9. IoT
1. Programming Languages & Libraries
Language Evolution 
• Design Patterns 
– which evolve into… 
• Libraries 
– which evolve into…. 
• Programming Languages!
State of Languages & Libraries 
• Programming Languages still suck 
– We have to execute very low level instructions 
• Rarely does source code convey intent 
– Partly our fault 
• Functional / Reactive / Parallell / Asynch 
– Are %*!@ killing us 
• Libraries are too coarse grained
What if Languages and Libraries… 
• Made us work with ASTs, not source code 
– bit.ly/codeinast - Paul Phillips 
• Provided the build tools for themselves 
– No splintering of the build ecosystem 
– e.g. go build 
• Were micro modularised 
– Java and Jigsaw will help for Java/JVM folks 
– Classloader hell? Use JRebel!
The last programming language?
2. IDEs
IDEs of the past
State of IDEs today 
• Beginning to understand semantics 
– e.g. Netbeans RESTFul services section 
• Marginal improvements 
– e.g. Netbeans native Maven support 
• They don’t support modern paradigms 
– Reactive, Asynchronous, Multi-threaded etc
State of the art?
What if your IDE… 
• Behaved like Google docs 
– e.g. Multiple collaborators on a file 
• Recommended libraries 
– From peer reviewed repositories 
• Crowd sourced good code 
– From peer review OSS projects 
• Had a REPL for Java
What if your IDE… 
• Had spotlight search for documentation 
– Across languages! 
• Advised you on data structures 
– Asked for requirements and picked 
• Advised you on common algorithms 
– Breath, Depth, big O characteristics 
• Advised you on resource usage
Could he come back?
What if your IDE… 
• Had networked linked debugging 
– Have a colleague mirror your debug session! 
• Had comments next to your code 
– e.g. bit.ly/sidecomments 
• Converted source code to language X 
– e.g. Groovy tro Java 8
What if your IDE… 
• Helped you name things properly 
– e.g. ’company_person to employee’ 
• Had an Single Responsibility Checker 
– And the other SOLID principles 
• Recommended a functional approach 
– Netbeans did this for me the other day!
What if your IDE… 
• Created dummy data for you 
– For tests and debugging 
• Had a visual design tool for developers 
– Didn’t try to be perfect 
– DOES tell you if you’ve committed a design sin 
• Visualised threading / streams with data 
– bit.ly/javaconcurrent - Victor Grazi 
– bit.ly/reactive_explained - André Staltz
What if IDEs visualised streams..
What if IDEs visualised streams.. 
var multiClickStream = clickStream 
.buffer(function() { 
return clickStream.throttle(250); 
}) 
.map(function(list) { return list.length; }) 
.filter(function(x) { return x >= 2; });
What if IDEs visualised streams
Inspiration from Lighttable
3. Source Control
Distributed taking over
What if your source control… 
• Warned you when you’re being stupid 
– e.g. Merging one branch into another 
• Had sensible names for commands 
– NOT git commit 
• Checked formatting from the CL 
• Had semantic Binary diff… 
– git-scm.com/docs/git-difftool
4. Build and Deployment Tools
Along came Ant
Sigh
What if your build tool… 
• Warned out about security breaches 
– e.g. 3rd party lib X is vulnerable 
• Built a patch against all branches 
– Before manual code review 
– Think Patch Queue 
• Encouraged you to do the right thing 
– But allowed you to be bad when needed
The final solution?
Deployment - Sorta done
What if your deployment tool… 
• Was *truly* descriptive 
• Wasn’t written in Ruby 
• Knew what it had done before 
– Chef/Puppet both leave dirty marks 
• Guided developers on Ops tasks 
– “IPTable? WAT?”
We still face configuration hell
5. Test and Code A nalysis Tools
We’re pretty much done here 
• JUnit, TestNG, Spock, Cucumber, 
– Karma 
• X Mocking libraries 
• Arquillian for Java EE 
• Findbugs, PMD, Coverity, Checkstyle 
– Threadsafe….
However, what if testing tools 
• Checked for out of data comments? 
– Karma 
• Had executable documentation 
– ASCIIDoc? JavaDoc? 
• Arquillian for Java EE 
• Findbugs, PMD, Coverity, Checkstyle 
– Threadsafe….
6. Performance Tools
State of the Art today
XRebel - Early warning in dev?
jClarity Censum - Analysis over raw data
jClarity Censum - Analysis over raw data
jClarity Illuminate - Analysis via Machine 
Learning
What if your performance tool… 
• Live profiled without impact 
– This needs managed runtime support 
– bit.ly/chronicle-queue - Peter Lawrey 
• Moved beyond profiling? 
– We’re working on it ;-) 
• Load tested with crowd sourced data 
• Was predictive or even self healing?
7. Collaboration
Remote work - 2015
Remote work - 2020?
Diversity
What if code review tools… 
• Focused on semantic differences 
– e.g. API breaking changes 
– Bughawk - Richard Warburton & John Oliver 
• Applied styling that suited the viewer 
• Had a visual representation of data 
• Had static analysis alongside the code
8. Businesses
What if businesses… 
• Allocated smaller budgets, frequently 
• Asked for smaller, useful services 
– Allowed users to use those first 
• THEN decide what they really want
9. IoT
IoT 
• Fragmented market 
– Is Java the glue that will bind it? 
• Hardware emulators 
– How do you test? 
• BIG data 
• Security modelling
You’re probably doomed
A reminder…
Acknowledgements 
• Images 
– gotstartrek.tumblr.com 
– Gary Bernhart 
– André Staltz 
– docs.cs.byu.edu 
• People 
– friends@jclarity.com 
– Victor Grazi, Mike Barker, Kirk Pepperdine 
– Bernd Eckendes, Hardy Jonck, Chris Newland 
– Peter Hilton, Ricahrd Warburton, Trisha Gee 
– Twitter
The Future of Performance Analysis 
www.jclarity.com - @jclarity 
Martijn Verburg (@karianna)

Contenu connexe

Tendances

"Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
 "Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets "Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
"Fast / Resilient / .NET – What to Choose?" Serhiy KalinetsFwdays
 
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)Pavlo Baron
 
AtlasCamp 2014: Preparing Your Plugin for JIRA Data Center
AtlasCamp 2014: Preparing Your Plugin for JIRA Data CenterAtlasCamp 2014: Preparing Your Plugin for JIRA Data Center
AtlasCamp 2014: Preparing Your Plugin for JIRA Data CenterAtlassian
 
Monitoring Oracle SOA Suite
Monitoring Oracle SOA SuiteMonitoring Oracle SOA Suite
Monitoring Oracle SOA SuiteC2B2 Consulting
 
High Performance Mysql
High Performance MysqlHigh Performance Mysql
High Performance Mysqlliufabin 66688
 
Asynchronous programming using CompletableFutures in Java
Asynchronous programming using CompletableFutures in JavaAsynchronous programming using CompletableFutures in Java
Asynchronous programming using CompletableFutures in JavaOresztész Margaritisz
 
SQL Azure - the good, the bad and the ugly.
SQL Azure - the good, the bad and the ugly.SQL Azure - the good, the bad and the ugly.
SQL Azure - the good, the bad and the ugly.Pini Krisher
 
J-Spring 2017 - Microservices in action at the Dutch National Police
J-Spring 2017 - Microservices in action at the Dutch National PoliceJ-Spring 2017 - Microservices in action at the Dutch National Police
J-Spring 2017 - Microservices in action at the Dutch National PoliceBert Jan Schrijver
 
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...Bert Jan Schrijver
 
Python performance profiling
Python performance profilingPython performance profiling
Python performance profilingJon Haddad
 
Team-based Development with Version Control
Team-based Development with Version ControlTeam-based Development with Version Control
Team-based Development with Version ControlRed Gate Software
 
RavenDB embedded at massive scales
RavenDB embedded at massive scalesRavenDB embedded at massive scales
RavenDB embedded at massive scalesOren Eini
 
Lightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesLightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesPGConf APAC
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara AnjargolianHakka Labs
 
"Building intuitive command-line interfaces in .NET", Alex Thissen
"Building intuitive command-line interfaces in .NET", Alex Thissen"Building intuitive command-line interfaces in .NET", Alex Thissen
"Building intuitive command-line interfaces in .NET", Alex ThissenFwdays
 
Architecture by Accident
Architecture by AccidentArchitecture by Accident
Architecture by AccidentGleicon Moraes
 
(ATS4-PLAT08) Server Pool Management
(ATS4-PLAT08) Server Pool Management(ATS4-PLAT08) Server Pool Management
(ATS4-PLAT08) Server Pool ManagementBIOVIA
 
Introduction to Cascading
Introduction to Cascading  Introduction to Cascading
Introduction to Cascading Cascading
 

Tendances (20)

"Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
 "Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets "Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
"Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
 
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
 
AtlasCamp 2014: Preparing Your Plugin for JIRA Data Center
AtlasCamp 2014: Preparing Your Plugin for JIRA Data CenterAtlasCamp 2014: Preparing Your Plugin for JIRA Data Center
AtlasCamp 2014: Preparing Your Plugin for JIRA Data Center
 
Monitoring Oracle SOA Suite
Monitoring Oracle SOA SuiteMonitoring Oracle SOA Suite
Monitoring Oracle SOA Suite
 
High Performance Mysql
High Performance MysqlHigh Performance Mysql
High Performance Mysql
 
Asynchronous programming using CompletableFutures in Java
Asynchronous programming using CompletableFutures in JavaAsynchronous programming using CompletableFutures in Java
Asynchronous programming using CompletableFutures in Java
 
SQL Azure - the good, the bad and the ugly.
SQL Azure - the good, the bad and the ugly.SQL Azure - the good, the bad and the ugly.
SQL Azure - the good, the bad and the ugly.
 
J-Spring 2017 - Microservices in action at the Dutch National Police
J-Spring 2017 - Microservices in action at the Dutch National PoliceJ-Spring 2017 - Microservices in action at the Dutch National Police
J-Spring 2017 - Microservices in action at the Dutch National Police
 
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
 
Python performance profiling
Python performance profilingPython performance profiling
Python performance profiling
 
Team-based Development with Version Control
Team-based Development with Version ControlTeam-based Development with Version Control
Team-based Development with Version Control
 
RavenDB embedded at massive scales
RavenDB embedded at massive scalesRavenDB embedded at massive scales
RavenDB embedded at massive scales
 
Lightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesLightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst Practices
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara Anjargolian
 
"Building intuitive command-line interfaces in .NET", Alex Thissen
"Building intuitive command-line interfaces in .NET", Alex Thissen"Building intuitive command-line interfaces in .NET", Alex Thissen
"Building intuitive command-line interfaces in .NET", Alex Thissen
 
Continuous Platformization
Continuous PlatformizationContinuous Platformization
Continuous Platformization
 
Becoming a better pen tester overview
Becoming a better pen tester overviewBecoming a better pen tester overview
Becoming a better pen tester overview
 
Architecture by Accident
Architecture by AccidentArchitecture by Accident
Architecture by Accident
 
(ATS4-PLAT08) Server Pool Management
(ATS4-PLAT08) Server Pool Management(ATS4-PLAT08) Server Pool Management
(ATS4-PLAT08) Server Pool Management
 
Introduction to Cascading
Introduction to Cascading  Introduction to Cascading
Introduction to Cascading
 

En vedette

Habits of Highly Effective Teams
Habits of Highly Effective TeamsHabits of Highly Effective Teams
Habits of Highly Effective TeamsjClarity
 
Garbage Collection - The Useful Parts
Garbage Collection - The Useful PartsGarbage Collection - The Useful Parts
Garbage Collection - The Useful PartsMartijn Verburg
 
Free community with deep roots
Free community with deep rootsFree community with deep roots
Free community with deep rootsMartijn Verburg
 
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)Martijn Verburg
 
Low pause GC in HotSpot
Low pause GC in HotSpotLow pause GC in HotSpot
Low pause GC in HotSpotjClarity
 

En vedette (6)

Habits of Highly Effective Teams
Habits of Highly Effective TeamsHabits of Highly Effective Teams
Habits of Highly Effective Teams
 
Garbage Collection - The Useful Parts
Garbage Collection - The Useful PartsGarbage Collection - The Useful Parts
Garbage Collection - The Useful Parts
 
Free community with deep roots
Free community with deep rootsFree community with deep roots
Free community with deep roots
 
NoHR Hiring
NoHR HiringNoHR Hiring
NoHR Hiring
 
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
 
Low pause GC in HotSpot
Low pause GC in HotSpotLow pause GC in HotSpot
Low pause GC in HotSpot
 

Similaire à The Final Frontier: The Future of Programming Tools

My tryst with sourcecode review
My tryst with sourcecode reviewMy tryst with sourcecode review
My tryst with sourcecode reviewAnant Shrivastava
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsUwe Korn
 
"Hands Off! Best Practices for Code Hand Offs"
"Hands Off!  Best Practices for Code Hand Offs""Hands Off!  Best Practices for Code Hand Offs"
"Hands Off! Best Practices for Code Hand Offs"Naomi Dushay
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and SecurityKelwin Yang
 
From a student to an apache committer practice of apache io tdb
From a student to an apache committer  practice of apache io tdbFrom a student to an apache committer  practice of apache io tdb
From a student to an apache committer practice of apache io tdbjixuan1989
 
Guide to Destroying Codebases The Demise of Clever Code
Guide to Destroying Codebases   The Demise of Clever CodeGuide to Destroying Codebases   The Demise of Clever Code
Guide to Destroying Codebases The Demise of Clever CodeGabor Varadi
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 KeynotePeter Wang
 
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel ZikmundNDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel ZikmundKarel Zikmund
 
Deep learning with DL4J - Hadoop Summit 2015
Deep learning with DL4J - Hadoop Summit 2015Deep learning with DL4J - Hadoop Summit 2015
Deep learning with DL4J - Hadoop Summit 2015Josh Patterson
 
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class Chris Gates
 
Applied Deep Learning with Spark and Deeplearning4j
Applied Deep Learning with Spark and Deeplearning4jApplied Deep Learning with Spark and Deeplearning4j
Applied Deep Learning with Spark and Deeplearning4jDataWorks Summit
 
Clojure in real life 17.10.2014
Clojure in real life 17.10.2014Clojure in real life 17.10.2014
Clojure in real life 17.10.2014Metosin Oy
 
IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)Peter Kofler
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
Know thy cost (or where performance problems lurk)
Know thy cost (or where performance problems lurk)Know thy cost (or where performance problems lurk)
Know thy cost (or where performance problems lurk)Oren Eini
 
Austin Python Learners Meetup - Everything you need to know about programming...
Austin Python Learners Meetup - Everything you need to know about programming...Austin Python Learners Meetup - Everything you need to know about programming...
Austin Python Learners Meetup - Everything you need to know about programming...Danny Mulligan
 
IT Trends 120-ish in the real world
 IT Trends 120-ish in the real world IT Trends 120-ish in the real world
IT Trends 120-ish in the real worldChristian John Felix
 
Data Science at Scale: Using Apache Spark for Data Science at Bitly
Data Science at Scale: Using Apache Spark for Data Science at BitlyData Science at Scale: Using Apache Spark for Data Science at Bitly
Data Science at Scale: Using Apache Spark for Data Science at BitlySarah Guido
 
ShaREing Is Caring
ShaREing Is CaringShaREing Is Caring
ShaREing Is Caringsporst
 

Similaire à The Final Frontier: The Future of Programming Tools (20)

My tryst with sourcecode review
My tryst with sourcecode reviewMy tryst with sourcecode review
My tryst with sourcecode review
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
 
"Hands Off! Best Practices for Code Hand Offs"
"Hands Off!  Best Practices for Code Hand Offs""Hands Off!  Best Practices for Code Hand Offs"
"Hands Off! Best Practices for Code Hand Offs"
 
Case study
Case studyCase study
Case study
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and Security
 
From a student to an apache committer practice of apache io tdb
From a student to an apache committer  practice of apache io tdbFrom a student to an apache committer  practice of apache io tdb
From a student to an apache committer practice of apache io tdb
 
Guide to Destroying Codebases The Demise of Clever Code
Guide to Destroying Codebases   The Demise of Clever CodeGuide to Destroying Codebases   The Demise of Clever Code
Guide to Destroying Codebases The Demise of Clever Code
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 Keynote
 
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel ZikmundNDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
 
Deep learning with DL4J - Hadoop Summit 2015
Deep learning with DL4J - Hadoop Summit 2015Deep learning with DL4J - Hadoop Summit 2015
Deep learning with DL4J - Hadoop Summit 2015
 
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
 
Applied Deep Learning with Spark and Deeplearning4j
Applied Deep Learning with Spark and Deeplearning4jApplied Deep Learning with Spark and Deeplearning4j
Applied Deep Learning with Spark and Deeplearning4j
 
Clojure in real life 17.10.2014
Clojure in real life 17.10.2014Clojure in real life 17.10.2014
Clojure in real life 17.10.2014
 
IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Know thy cost (or where performance problems lurk)
Know thy cost (or where performance problems lurk)Know thy cost (or where performance problems lurk)
Know thy cost (or where performance problems lurk)
 
Austin Python Learners Meetup - Everything you need to know about programming...
Austin Python Learners Meetup - Everything you need to know about programming...Austin Python Learners Meetup - Everything you need to know about programming...
Austin Python Learners Meetup - Everything you need to know about programming...
 
IT Trends 120-ish in the real world
 IT Trends 120-ish in the real world IT Trends 120-ish in the real world
IT Trends 120-ish in the real world
 
Data Science at Scale: Using Apache Spark for Data Science at Bitly
Data Science at Scale: Using Apache Spark for Data Science at BitlyData Science at Scale: Using Apache Spark for Data Science at Bitly
Data Science at Scale: Using Apache Spark for Data Science at Bitly
 
ShaREing Is Caring
ShaREing Is CaringShaREing Is Caring
ShaREing Is Caring
 

Dernier

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 

Dernier (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

The Final Frontier: The Future of Programming Tools

  • 1.
  • 2. The Final Frontier Martijn Verburg (@karianna) www.jclarity.com - @jclarity
  • 3. My Background • Martijn Verburg (@karianna) – CEO at jClarity – Run Adopt a JSR & Adopt OpenJDK programs – Speaker, Author, Java Champion – aka "The Diabolical Developer" • As a former CTO… – Have seen *lots* of tools • As a CEO… – Part time coder, tools make or break my day
  • 4. The Frontiers 1. Programming Languages & Libraries 2.IDEs 3. Source Control 4. Build and Deployment Tools 5. Testing and Code Analysis Tools 6. Performance Tools 7. Collaboration 8. Businesses 9. IoT
  • 6. Language Evolution • Design Patterns – which evolve into… • Libraries – which evolve into…. • Programming Languages!
  • 7. State of Languages & Libraries • Programming Languages still suck – We have to execute very low level instructions • Rarely does source code convey intent – Partly our fault • Functional / Reactive / Parallell / Asynch – Are %*!@ killing us • Libraries are too coarse grained
  • 8. What if Languages and Libraries… • Made us work with ASTs, not source code – bit.ly/codeinast - Paul Phillips • Provided the build tools for themselves – No splintering of the build ecosystem – e.g. go build • Were micro modularised – Java and Jigsaw will help for Java/JVM folks – Classloader hell? Use JRebel!
  • 11. IDEs of the past
  • 12. State of IDEs today • Beginning to understand semantics – e.g. Netbeans RESTFul services section • Marginal improvements – e.g. Netbeans native Maven support • They don’t support modern paradigms – Reactive, Asynchronous, Multi-threaded etc
  • 13. State of the art?
  • 14. What if your IDE… • Behaved like Google docs – e.g. Multiple collaborators on a file • Recommended libraries – From peer reviewed repositories • Crowd sourced good code – From peer review OSS projects • Had a REPL for Java
  • 15. What if your IDE… • Had spotlight search for documentation – Across languages! • Advised you on data structures – Asked for requirements and picked • Advised you on common algorithms – Breath, Depth, big O characteristics • Advised you on resource usage
  • 16. Could he come back?
  • 17. What if your IDE… • Had networked linked debugging – Have a colleague mirror your debug session! • Had comments next to your code – e.g. bit.ly/sidecomments • Converted source code to language X – e.g. Groovy tro Java 8
  • 18. What if your IDE… • Helped you name things properly – e.g. ’company_person to employee’ • Had an Single Responsibility Checker – And the other SOLID principles • Recommended a functional approach – Netbeans did this for me the other day!
  • 19. What if your IDE… • Created dummy data for you – For tests and debugging • Had a visual design tool for developers – Didn’t try to be perfect – DOES tell you if you’ve committed a design sin • Visualised threading / streams with data – bit.ly/javaconcurrent - Victor Grazi – bit.ly/reactive_explained - André Staltz
  • 20. What if IDEs visualised streams..
  • 21. What if IDEs visualised streams.. var multiClickStream = clickStream .buffer(function() { return clickStream.throttle(250); }) .map(function(list) { return list.length; }) .filter(function(x) { return x >= 2; });
  • 22. What if IDEs visualised streams
  • 26. What if your source control… • Warned you when you’re being stupid – e.g. Merging one branch into another • Had sensible names for commands – NOT git commit • Checked formatting from the CL • Had semantic Binary diff… – git-scm.com/docs/git-difftool
  • 27. 4. Build and Deployment Tools
  • 29. Sigh
  • 30. What if your build tool… • Warned out about security breaches – e.g. 3rd party lib X is vulnerable • Built a patch against all branches – Before manual code review – Think Patch Queue • Encouraged you to do the right thing – But allowed you to be bad when needed
  • 33. What if your deployment tool… • Was *truly* descriptive • Wasn’t written in Ruby • Knew what it had done before – Chef/Puppet both leave dirty marks • Guided developers on Ops tasks – “IPTable? WAT?”
  • 34. We still face configuration hell
  • 35. 5. Test and Code A nalysis Tools
  • 36. We’re pretty much done here • JUnit, TestNG, Spock, Cucumber, – Karma • X Mocking libraries • Arquillian for Java EE • Findbugs, PMD, Coverity, Checkstyle – Threadsafe….
  • 37. However, what if testing tools • Checked for out of data comments? – Karma • Had executable documentation – ASCIIDoc? JavaDoc? • Arquillian for Java EE • Findbugs, PMD, Coverity, Checkstyle – Threadsafe….
  • 39. State of the Art today
  • 40. XRebel - Early warning in dev?
  • 41. jClarity Censum - Analysis over raw data
  • 42. jClarity Censum - Analysis over raw data
  • 43. jClarity Illuminate - Analysis via Machine Learning
  • 44. What if your performance tool… • Live profiled without impact – This needs managed runtime support – bit.ly/chronicle-queue - Peter Lawrey • Moved beyond profiling? – We’re working on it ;-) • Load tested with crowd sourced data • Was predictive or even self healing?
  • 47. Remote work - 2020?
  • 49. What if code review tools… • Focused on semantic differences – e.g. API breaking changes – Bughawk - Richard Warburton & John Oliver • Applied styling that suited the viewer • Had a visual representation of data • Had static analysis alongside the code
  • 51. What if businesses… • Allocated smaller budgets, frequently • Asked for smaller, useful services – Allowed users to use those first • THEN decide what they really want
  • 53. IoT • Fragmented market – Is Java the glue that will bind it? • Hardware emulators – How do you test? • BIG data • Security modelling
  • 56.
  • 57. Acknowledgements • Images – gotstartrek.tumblr.com – Gary Bernhart – André Staltz – docs.cs.byu.edu • People – friends@jclarity.com – Victor Grazi, Mike Barker, Kirk Pepperdine – Bernd Eckendes, Hardy Jonck, Chris Newland – Peter Hilton, Ricahrd Warburton, Trisha Gee – Twitter
  • 58. The Future of Performance Analysis www.jclarity.com - @jclarity Martijn Verburg (@karianna)