Slide 1

Slide 1 text

the future of development are our jobs getting harder or easier? Dr Holly Cummins Senior Principal Software Engineer, Quarkus @[email protected] Red Hat FOSSCOMM October 21, 2023

Slide 2

Slide 2 text

@holly_cummins #RedHat senior principal software engineer helping to build Quarkus Γειά σου!

Slide 3

Slide 3 text

@holly_cummins #RedHat Caused by: java.io.IOException: Invalid Magic at org.jboss.jandex.Indexer.verifyMagic(Indexer.java:2090) at org.jboss.jandex.Indexer.indexWithSummary(Indexer.java:2479) at org.jboss.jandex.Indexer.index(Indexer.java:2452 true story

Slide 4

Slide 4 text

@holly_cummins #RedHat Caused by: java.io.IOException: Invalid Magic at org.jboss.jandex.Indexer.verifyMagic(Indexer.java:2090) at org.jboss.jandex.Indexer.indexWithSummary(Indexer.java:2479) at org.jboss.jandex.Indexer.index(Indexer.java:2452 true story Invalid Magic?!

Slide 5

Slide 5 text

@holly_cummins #RedHat we didn’t always have magic

Slide 6

Slide 6 text

@holly_cummins #RedHat punched cards 1804 - 1960s

Slide 7

Slide 7 text

@holly_cummins #RedHat https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/IMU_COMPENSATION_PACKAGE.agc 1969

Slide 8

Slide 8 text

@holly_cummins #RedHat TCF 1/PIPA1 +1 NOOP # LESS THAN ZERO IMPOSSIBLE. RELINT # Page 299 IRIGCOMP TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS. TS BUF # INDEX COUNTER - IRIGX, IRIGY, IRIGZ. IRIGX EXTEND DCS DELVX # (PIPA PULSES) X 2(+14) DXCH MPAC CA ADIAX # (GYRO PULSES)/(PIPA PULSE) X 2(-3) * TC GCOMPSUB # -(ADIAX)(PIPAX) (GYRO PULSES) X 2(+14) EXTEND # DCS DELVY # (PIPA PULSES) X 2(+14) DXCH MPAC # CS ADSRAX # (GYRO PULSES)/(PIPA PULSE) X 2(-3) * TC GCOMPSUB # +(ADSRAX)(PIPAY) (GYRO PULSES) X 2(+14) # EXTEND # *** # DCS DELVY # *** (PIPA PULSES) X 2(+14) # DXCH MPAC # *** # CA ADOAX # *** (GYRO PULSES)/(PIPA PULSE) X 2(-3) * # TC GCOMPSUB # *** -(ADOAX)(PIPAZ) (GYRO PULSES) X 2(+14) CS NBDX # (GYRO PULSES)/(CS) X 2(-5) TC DRIFTSUB # -(NBDX)(DELTAT) (GYRO PULSES) X 2(+14) IRIGY EXTEND DCS DELVY # (PIPA PULSES) X 2(+14) DXCH MPAC CA ADIAY # (GYRO PULSES)/(PIPA PULSE) X 2(-3) * TC GCOMPSUB # -(ADIAY)(PIPAY) (GYRO PULSES) X 2(+14) EXTEND DCS DELVZ # (PIPA PULSES) X 2(+14) DXCH MPAC CS ADSRAY # (GYRO PULSES)/(PIPA PULSE) X 2(-3) * TC GCOMPSUB # +(ADSRAY)(PIPAZ) (GYRO PULSES) X 2(+14) # EXTEND # *** # DCS DELVX # *** (PIPA PULSES) X 2(+14) # DXCH MPAC # *** https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/IMU_COMPENSATION_PACKAGE.agc 1969

Slide 9

Slide 9 text

@holly_cummins #RedHat 1974 image courtesy of Smithsonian Institute, https://americanhistory.si.edu/collections/search/object/nmah_334396 altair 8800

Slide 10

Slide 10 text

@holly_cummins #RedHat 1974 image courtesy of Smithsonian Institute, https://americanhistory.si.edu/collections/search/object/nmah_334396 altair 8800 light bulbs for output

Slide 11

Slide 11 text

@holly_cummins #RedHat 1974 image courtesy of Smithsonian Institute, https://americanhistory.si.edu/collections/search/object/nmah_334396 altair 8800 light bulbs for output switches for input

Slide 12

Slide 12 text

@holly_cummins #RedHat java 1995

Slide 13

Slide 13 text

@holly_cummins #RedHat large language models + prompt engineering

Slide 14

Slide 14 text

@holly_cummins #RedHat large language models + prompt engineering

Slide 15

Slide 15 text

@holly_cummins #RedHat large language models + prompt engineering

Slide 16

Slide 16 text

@holly_cummins #RedHat large language models + prompt engineering

Slide 17

Slide 17 text

@holly_cummins #RedHat large language models + prompt engineering

Slide 18

Slide 18 text

@holly_cummins #RedHat large language models + prompt engineering

Slide 19

Slide 19 text

@holly_cummins #RedHat large language models + prompt engineering

Slide 20

Slide 20 text

our modern stack

Slide 21

Slide 21 text

transistor networks our modern stack

Slide 22

Slide 22 text

transistor networks machine codes our modern stack

Slide 23

Slide 23 text

transistor networks assembler machine codes our modern stack

Slide 24

Slide 24 text

transistor networks high-level language assembler machine codes our modern stack

Slide 25

Slide 25 text

transistor networks high-level language assembler machine codes libraries our modern stack

Slide 26

Slide 26 text

transistor networks framework high-level language assembler machine codes libraries our modern stack

Slide 27

Slide 27 text

transistor networks framework high-level language assembler machine codes libraries our modern stack ai coding assistant

Slide 28

Slide 28 text

transistor networks framework application high-level language assembler machine codes libraries our modern stack ai coding assistant

Slide 29

Slide 29 text

transistor networks framework application high-level language assembler machine codes libraries our modern stack ai coding assistant abstraction

Slide 30

Slide 30 text

@holly_cummins #RedHat awesome. what could possibly go wrong?

Slide 31

Slide 31 text

@holly_cummins #RedHat

Slide 32

Slide 32 text

@holly_cummins #RedHat package com.example; import org.jboss.logging.Logger; public class MyService { private static final Logger log = Logger.getLogger(MyService.class); public void doSomething() { log.info("It works!"); } } example: quarkus logging

Slide 33

Slide 33 text

@holly_cummins #RedHat package com.example; import org.jboss.logging.Logger; public class MyService { private static final Logger log = Logger.getLogger(MyService.class); public void doSomething() { log.info("It works!"); } } example: quarkus logging import io.quarkus.logging.Log; Log

Slide 34

Slide 34 text

@holly_cummins #RedHat

Slide 35

Slide 35 text

@holly_cummins #RedHat horrible

Slide 36

Slide 36 text

@holly_cummins #RedHat

Slide 37

Slide 37 text

@holly_cummins #RedHat if one is not able to write a simple code and depends on generated code, then he is not a developer

Slide 38

Slide 38 text

#RedHat things people say about abstraction higher abstraction means stupider developers*

Slide 39

Slide 39 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant

Slide 40

Slide 40 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant developer skill?

Slide 41

Slide 41 text

@holly_cummins #RedHat gate- keeping

Slide 42

Slide 42 text

@holly_cummins #RedHat people used to say the same thing about garbage collection

Slide 43

Slide 43 text

@holly_cummins #RedHat “Avoid using any language that uses ‘garbage collection’ memory management. It teaches bad habits and makes for lazy, sloppy engineers.” –anonymous, 2005 “ http://ex-mentis.blogspot.com/2006/05/are-paul-graham-and-joel-spolsky-right.html

Slide 44

Slide 44 text

@holly_cummins #RedHat “when programmers rely on a GC implementation to clean up their mess, they become lazy.” –M., 2006 www.skyos.org/board/viewtopic.php?p=91820&sid=e56df2df37ff899da22c8ace

Slide 45

Slide 45 text

@holly_cummins #RedHat “Garbage collection encourages lazy programming habits, which I’ve seen in quite a few Java developers.” – anonymous, 2006 https://slashdot.org/story/06/08/07/2126253/xcode-update-gives-objective-c-garbage-collection

Slide 46

Slide 46 text

@holly_cummins #RedHat rust

Slide 47

Slide 47 text

@holly_cummins #RedHat

Slide 48

Slide 48 text

@holly_cummins #RedHat garbage collection users were more likely to complete the task in the time available, and those who did so required only about a third as much time (4 hours vs. 12 hours)

Slide 49

Slide 49 text

#RedHat things people say about abstraction higher abstraction means slower code*

Slide 50

Slide 50 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant

Slide 51

Slide 51 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant execution speed

Slide 52

Slide 52 text

@holly_cummins #RedHat example: quarkus’s (re)discovery of the jvm type pollution bug

Slide 53

Slide 53 text

@holly_cummins #RedHat

Slide 54

Slide 54 text

@holly_cummins #RedHat private static int extractSize(Object it) { if (it instanceof Collection) { return ((Collection>) it).size(); } else if (it instanceof Map) { return ((Map, ?>) it).size(); } else if (it.getClass().isArray()) { return Array.getLength(it); } else if (it instanceof Integer) { return ((Integer) it); } return 10; }

Slide 55

Slide 55 text

@holly_cummins #RedHat private static int extractSize(Object it) { if (it instanceof Collection) { return ((Collection>) it).size(); } else if (it instanceof Map) { return ((Map, ?>) it).size(); } else if (it.getClass().isArray()) { return Array.getLength(it); } else if (it instanceof Integer) { return ((Integer) it); } return 10; } // Note that we intentionally use "instanceof" to test interfaces as the last resort in order to mitigate the "type pollution" // See https://github.com/RedHatPerf/type-pollution-agent for more information if (it instanceof AbstractCollection) { return ((AbstractCollection>) it).size(); } else if (it instanceof AbstractMap) { return ((AbstractMap, ?>) it).size(); } else if (it instanceof Collection) { return ((Collection>) it).size(); } else if (it instanceof Map) { return ((Map, ?>) it).size(); } return 10; }

Slide 56

Slide 56 text

@holly_cummins #RedHat normal, not-weird code is most optimisable by the JIT do not do this at home! JIT makes things fast: java code can be faster than c

Slide 57

Slide 57 text

#RedHat things people say about abstraction higher abstraction means loss of control

Slide 58

Slide 58 text

@holly_cummins #RedHat

Slide 59

Slide 59 text

@holly_cummins #RedHat your logging now depends on quarkus

Slide 60

Slide 60 text

@holly_cummins #RedHat formatting

Slide 61

Slide 61 text

@holly_cummins #RedHat

Slide 62

Slide 62 text

@holly_cummins #RedHat [space] [space] [space] [space]

Slide 63

Slide 63 text

@holly_cummins #RedHat gah! auto-formatters are a thing! [space] [space] [space] [space] [space] [space] [space] your time is valuable, and typing space- space-space is not a good use of it [space] [space] [space] [space

Slide 64

Slide 64 text

@holly_cummins #RedHat go fmt

Slide 65

Slide 65 text

@holly_cummins #RedHat “could we have something like go fmt, but configurable?”

Slide 66

Slide 66 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant

Slide 67

Slide 67 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant control

Slide 68

Slide 68 text

#RedHat things people say about abstraction abstraction sacrifices correctness

Slide 69

Slide 69 text

@holly_cummins #RedHat https://www.sify.com/ai-analytics/the-hilarious-and-horrifying-hallucinations-of-ai/

Slide 70

Slide 70 text

@holly_cummins #RedHat “What is the world record for crossing the English channel entirely on foot?” https://www.sify.com/ai-analytics/the-hilarious-and-horrifying-hallucinations-of-ai/

Slide 71

Slide 71 text

@holly_cummins #RedHat “What is the world record for crossing the English channel entirely on foot?” “The world record for crossing the English Channel entirely on foot is held by Christof Wandratsch of Germany, who completed the crossing in 14 hours and 51 minutes on August 14, 2020.” https://www.sify.com/ai-analytics/the-hilarious-and-horrifying-hallucinations-of-ai/

Slide 72

Slide 72 text

@holly_cummins #RedHat

Slide 73

Slide 73 text

@holly_cummins #RedHat quarkus + chat gpt

Slide 74

Slide 74 text

@holly_cummins #RedHat quarkus + chat gpt

Slide 75

Slide 75 text

@holly_cummins #RedHat quarkus + chat gpt this is wrong in every way (there is no quinoa cli, and having one would be a terrible design)

Slide 76

Slide 76 text

@holly_cummins #RedHat quarkus + chat gpt this is wrong in every way (there is no quinoa cli, and having one would be a terrible design)

Slide 77

Slide 77 text

@holly_cummins #RedHat quarkus + chat gpt this is wrong in every way (there is no quinoa cli, and having one would be a terrible design) this is not necessary (it misses a major quarkus usability feature)

Slide 78

Slide 78 text

@holly_cummins #RedHat

Slide 79

Slide 79 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant

Slide 80

Slide 80 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant pure expression of developer intent with no side-effects

Slide 81

Slide 81 text

#RedHat things people say about abstraction abstract === high effort

Slide 82

Slide 82 text

@holly_cummins #RedHat it took 4 different prompts for my chat-gpt screenshot

Slide 83

Slide 83 text

@holly_cummins #RedHat “I tried being exhaustive with explanations about things like the data range, input shapes and reasons for parameters, and with enough explanation it will eventually come to the right conclusions - but it’s far more effort to exhaustively explain what I need than to just write the code” https://news.ycombinator.com/item?id=34848353

Slide 84

Slide 84 text

@holly_cummins #RedHat programming in diagrams instead of words turns out to be a lot of work

Slide 85

Slide 85 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant

Slide 86

Slide 86 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant speed of development?

Slide 87

Slide 87 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant

Slide 88

Slide 88 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant cognitive load ai coding assistant machine codes assembler high-level language libraries framework

Slide 89

Slide 89 text

#RedHat @holly_cummins choosing a programming language

Slide 90

Slide 90 text

#RedHat @holly_cummins choosing a programming language 1963

Slide 91

Slide 91 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP

Slide 92

Slide 92 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023

Slide 93

Slide 93 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python

Slide 94

Slide 94 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C

Slide 95

Slide 95 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++

Slide 96

Slide 96 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java

Slide 97

Slide 97 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C#

Slide 98

Slide 98 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript

Slide 99

Slide 99 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic

Slide 100

Slide 100 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP

Slide 101

Slide 101 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL

Slide 102

Slide 102 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly

Slide 103

Slide 103 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go

Slide 104

Slide 104 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch

Slide 105

Slide 105 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal

Slide 106

Slide 106 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal MATLAB

Slide 107

Slide 107 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal MATLAB Swift

Slide 108

Slide 108 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal MATLAB Swift Fortran

Slide 109

Slide 109 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal MATLAB Swift Fortran R

Slide 110

Slide 110 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal MATLAB Swift Fortran R Kotlin

Slide 111

Slide 111 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal MATLAB Swift Fortran R Kotlin Ruby

Slide 112

Slide 112 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal MATLAB Swift Fortran R Kotlin Ruby Rust

Slide 113

Slide 113 text

#RedHat @holly_cummins choosing a programming language 1963 Fortan ALGOL COBOL LISP 2023 Python C C++ Java C# JavaScript Visual Basic PHP SQL Assembly Go Scratch Pascal MATLAB Swift Fortran R Kotlin Ruby Rust …

Slide 114

Slide 114 text

#RedHat @holly_cummins and if you’re using javascript …

Slide 115

Slide 115 text

#RedHat @holly_cummins and if you’re using javascript … 1,300,000 libraries in npm registry

Slide 116

Slide 116 text

#RedHat @holly_cummins and if you’re using javascript … 1,300,000 libraries in npm registry 2,0

Slide 117

Slide 117 text

#RedHat @holly_cummins now you need a framework

Slide 118

Slide 118 text

#RedHat @holly_cummins now you need to be cloud native

Slide 119

Slide 119 text

No content

Slide 120

Slide 120 text

@holly_cummins #RedHat

Slide 121

Slide 121 text

#RedHat @holly_cummins shift left

Slide 122

Slide 122 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant shift left

Slide 123

Slide 123 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant quality shift left

Slide 124

Slide 124 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant security quality shift left

Slide 125

Slide 125 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant security observability quality shift left

Slide 126

Slide 126 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant security observability operations quality shift left

Slide 127

Slide 127 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant security observability operations usab quality shift left

Slide 128

Slide 128 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant security observability operations usab quality ud bills shift left

Slide 129

Slide 129 text

#RedHat @holly_cummins things you need to do well in 2023:

Slide 130

Slide 130 text

#RedHat @holly_cummins apps things you need to do well in 2023:

Slide 131

Slide 131 text

#RedHat @holly_cummins apps ops things you need to do well in 2023:

Slide 132

Slide 132 text

#RedHat @holly_cummins apps ops devops things you need to do well in 2023:

Slide 133

Slide 133 text

#RedHat @holly_cummins apps ops devops devsecops things you need to do well in 2023:

Slide 134

Slide 134 text

#RedHat @holly_cummins apps ops devops devsecops devbizops things you need to do well in 2023:

Slide 135

Slide 135 text

#RedHat @holly_cummins apps ops devops devsecops devbizops devsecbizops things you need to do well in 2023:

Slide 136

Slide 136 text

#RedHat @holly_cummins apps ops devops devsecops devbizops devsecbizops finops things you need to do well in 2023:

Slide 137

Slide 137 text

#RedHat @holly_cummins shift down

Slide 138

Slide 138 text

#RedHat @holly_cummins shift down let platforms do the work

Slide 139

Slide 139 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant security observability operations usab quality ud bills shift down

Slide 140

Slide 140 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant security observability operations usability quality cloud bills shift down

Slide 141

Slide 141 text

transistor networks framework application high-level language assembler machine codes libraries ai coding assistant security observability operations usability quality cloud bills shift down value

Slide 142

Slide 142 text

#RedHat @holly_cummins what about open source?

Slide 143

Slide 143 text

@holly_cummins #RedHat open source reduces developer tedium

Slide 144

Slide 144 text

@holly_cummins #RedHat open source reduces developer tedium there’s a library for that

Slide 145

Slide 145 text

@holly_cummins #RedHat open source does not help with cognitive load

Slide 146

Slide 146 text

@holly_cummins #RedHat open source does not help with cognitive load there’s a lot of libraries for … well, anything

Slide 147

Slide 147 text

@holly_cummins #RedHat

Slide 148

Slide 148 text

@holly_cummins #RedHat all open-source

Slide 149

Slide 149 text

@holly_cummins #RedHat open source is everywhere (including our ‘original’ code)

Slide 150

Slide 150 text

#RedHat @holly_cummins https://stackoverflow.blog/2021/04/01/the-key-copy-paste/ https://stackoverflow.blog/2021/12/30/how-often-do-people-actually-copy-and-paste-from-stack-overflow-now-we-know/

Slide 151

Slide 151 text

#RedHat @holly_cummins https://stackoverflow.blog/2021/04/01/the-key-copy-paste/ ¼ of visitors copy https://stackoverflow.blog/2021/12/30/how-often-do-people-actually-copy-and-paste-from-stack-overflow-now-we-know/

Slide 152

Slide 152 text

#RedHat @holly_cummins https://stackoverflow.blog/2021/04/01/the-key-copy-paste/ ¼ of visitors copy 2 week period: 40,623,987 copies https://stackoverflow.blog/2021/12/30/how-often-do-people-actually-copy-and-paste-from-stack-overflow-now-we-know/

Slide 153

Slide 153 text

#RedHat @holly_cummins

Slide 154

Slide 154 text

#RedHat @holly_cummins A student copied my code in GitHub and submitted it as his assignment. He emailed me to ask me to temporarily close the repo so his TA couldn’t search my code.

Slide 155

Slide 155 text

#RedHat @holly_cummins how are large language models trained? copying open source code, so that you can paste it

Slide 156

Slide 156 text

#RedHat @holly_cummins big questions

Slide 157

Slide 157 text

#RedHat @holly_cummins will ai take our jobs?

Slide 158

Slide 158 text

#RedHat @holly_cummins will ai take our jobs? NO.

Slide 159

Slide 159 text

#RedHat @holly_cummins professional developers in the world https://www.statista.com/statistics/627312/worldwide-developer-population/ https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf

Slide 160

Slide 160 text

#RedHat @holly_cummins professional developers in the world https://www.statista.com/statistics/627312/worldwide-developer-population/ https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf machine codes vacuum tube networks

Slide 161

Slide 161 text

#RedHat @holly_cummins professional developers in the world https://www.statista.com/statistics/627312/worldwide-developer-population/ https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf assembler machine codes vacuum tube networks

Slide 162

Slide 162 text

#RedHat @holly_cummins professional developers in the world https://www.statista.com/statistics/627312/worldwide-developer-population/ https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf transistor networks assembler machine codes

Slide 163

Slide 163 text

#RedHat @holly_cummins professional developers in the world https://www.statista.com/statistics/627312/worldwide-developer-population/ https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf transistor networks high-level languages assembler machine codes

Slide 164

Slide 164 text

#RedHat @holly_cummins professional developers in the world https://www.statista.com/statistics/627312/worldwide-developer-population/ https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf transistor networks high-level languages assembler machine codes libraries

Slide 165

Slide 165 text

#RedHat @holly_cummins professional developers in the world https://www.statista.com/statistics/627312/worldwide-developer-population/ https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf transistor networks frameworks high-level languages assembler machine codes libraries

Slide 166

Slide 166 text

#RedHat @holly_cummins professional developers in the world https://www.statista.com/statistics/627312/worldwide-developer-population/ https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf transistor networks frameworks high-level languages assembler machine codes libraries ai coding assistants

Slide 167

Slide 167 text

#RedHat @holly_cummins software is not going away

Slide 168

Slide 168 text

human alarm clock “knocker-up” 1800s - 1940s

Slide 169

Slide 169 text

human alarm clock 1800s - 1940s

Slide 170

Slide 170 text

#RedHat @holly_cummins the more software we have, the more we want

Slide 171

Slide 171 text

#RedHat @holly_cummins

Slide 172

Slide 172 text

#RedHat @holly_cummins software to do stuff

Slide 173

Slide 173 text

#RedHat @holly_cummins software to do stuff software to do more stuff

Slide 174

Slide 174 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software

Slide 175

Slide 175 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show

Slide 176

Slide 176 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software

Slide 177

Slide 177 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software

Slide 178

Slide 178 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software software to manage the software

Slide 179

Slide 179 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software software to manage the software software to write the software

Slide 180

Slide 180 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software software to manage the software software to write the software software to manage the software that writes the software

Slide 181

Slide 181 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software software to manage the software software to write the software software to manage the software that writes the software software to try and avoid skynet

Slide 182

Slide 182 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software software to manage the software software to write the software software to manage the software that writes the software software to try and avoid skynet software to tell people about software

Slide 183

Slide 183 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software software to manage the software software to write the software software to manage the software that writes the software software to try and avoid skynet software to tell people about software software to work out the meaning of life

Slide 184

Slide 184 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software software to manage the software software to write the software software to manage the software that writes the software software to try and avoid skynet software to tell people about software software to work out the meaning of life software to gamify software

Slide 185

Slide 185 text

#RedHat @holly_cummins software to do stuff software to do more stuff software to bypass advertisements in the software software to bypass the bypass software so ads still show software to monitor the software software to debug the software software to manage the software software to write the software software to manage the software that writes the software software to try and avoid skynet software to tell people about software software to work out the meaning of life software to gamify software …

Slide 186

Slide 186 text

#RedHat @holly_cummins will the productivity expectation be higher?

Slide 187

Slide 187 text

#RedHat @holly_cummins will the productivity expectation be higher? probably

Slide 188

Slide 188 text

#RedHat @holly_cummins will we spend more time debugging generated code?

Slide 189

Slide 189 text

#RedHat @holly_cummins will we spend more time debugging generated code? probably :)

Slide 190

Slide 190 text

#RedHat @holly_cummins copilot users accepted 30% of its suggestions copilot produced 40% of the codebase

Slide 191

Slide 191 text

#RedHat @holly_cummins copilot users accepted 30% of its suggestions copilot produced 40% of the codebase uh oh, what does that say about the information density?

Slide 192

Slide 192 text

#RedHat @holly_cummins “lines of code” is not a good productivity metric for people. or machines.

Slide 193

Slide 193 text

#RedHat @holly_cummins if code is so boring a machine can predict it, maybe it shouldn’t be there?

Slide 194

Slide 194 text

#RedHat @holly_cummins do we really want software-generated boilerplate?

Slide 195

Slide 195 text

#RedHat @holly_cummins is it inevitable that things get easier?

Slide 196

Slide 196 text

#RedHat @holly_cummins is it inevitable that things get easier? no

Slide 197

Slide 197 text

#RedHat @holly_cummins

Slide 198

Slide 198 text

#RedHat @holly_cummins java 1995

Slide 199

Slide 199 text

#RedHat @holly_cummins java enterprise java beans 1995 1999

Slide 200

Slide 200 text

#RedHat @holly_cummins yaml

Slide 201

Slide 201 text

#RedHat @holly_cummins design to make things easy

Slide 202

Slide 202 text

#RedHat @holly_cummins design to make things easy minimise opportunity for error

Slide 203

Slide 203 text

#RedHat @holly_cummins design to make things easy minimise opportunity for error minimise boilerplate

Slide 204

Slide 204 text

#RedHat @holly_cummins design to make things easy minimise opportunity for error minimise boilerplate minimuse duplication of information

Slide 205

Slide 205 text

#RedHat @holly_cummins design to make things easy minimise opportunity for error minimise boilerplate minimuse duplication of information maximise expressiveness

Slide 206

Slide 206 text

#RedHat @holly_cummins design to make things easy minimise opportunity for error minimise boilerplate minimuse duplication of information maximise expressiveness talk to people (doh!)

Slide 207

Slide 207 text

#RedHat @holly_cummins if ai can save dev time using your thing, maybe you designed your api wrong?

Slide 208

Slide 208 text

#RedHat @holly_cummins challenge assumptions

Slide 209

Slide 209 text

#RedHat @holly_cummins “what if … people didn’t have to do this?”

Slide 210

Slide 210 text

#RedHat @holly_cummins “what if … you didn’t need to configure a database?”

Slide 211

Slide 211 text

#RedHat @holly_cummins example: letting computers to the hard work

Slide 212

Slide 212 text

#RedHat @holly_cummins io.quarkus quarkus-jdbc-postgresql pom.xml

Slide 213

Slide 213 text

#RedHat @holly_cummins we see you will be using a database io.quarkus quarkus-jdbc-postgresql pom.xml

Slide 214

Slide 214 text

#RedHat @holly_cummins we see you will be using a database we see you do not have one io.quarkus quarkus-jdbc-postgresql pom.xml # This config deliberately left empty application.properties

Slide 215

Slide 215 text

#RedHat @holly_cummins we see you will be using a database we see you do not have one io.quarkus quarkus-jdbc-postgresql pom.xml # This config deliberately left empty application.properties we’ll just sort one out for you

Slide 216

Slide 216 text

#RedHat @holly_cummins caution: if people expect something to be hard, making it easy can confuse them

Slide 217

Slide 217 text

@holly_cummins #RedHat tl;dpa (too long; didn’t pay attention) shift down, to make shifting left easier coding assistants are great at … typing challenge assumptions + eliminate boilerplate it is awesome being a developer

Slide 218

Slide 218 text

slides thank you Holly Cummins Red Hat https://hollycummins.com/jobs-harder-easier-fosscomm/