1 00:00:00,420 --> 00:00:05,910 [Music] 2 00:00:10,800 --> 00:00:16,000 Good morning everybody and welcome back 3 00:00:13,040 --> 00:00:18,560 to PyCon AU 2025. 4 00:00:16,000 --> 00:00:21,119 Excited to see you all here. Now, it is 5 00:00:18,560 --> 00:00:23,840 my great pleasure to introduce our first 6 00:00:21,119 --> 00:00:26,320 speaker of the day in this room, uh, a 7 00:00:23,840 --> 00:00:29,199 friend, uh, Derek Bingham, who is going 8 00:00:26,320 --> 00:00:31,279 to be speaking to us on the continued 9 00:00:29,199 --> 00:00:32,399 developer evolution. A big round of 10 00:00:31,279 --> 00:00:34,960 applause, please. 11 00:00:32,399 --> 00:00:38,239 Thank you, Jack. Thank you. Thank you, 12 00:00:34,960 --> 00:00:41,520 everybody. Too kind. So, I'm going to 13 00:00:38,239 --> 00:00:43,840 start this talk with an image. Um, and 14 00:00:41,520 --> 00:00:45,520 I'll explain the image at the end of the 15 00:00:43,840 --> 00:00:48,640 talk. You can have a look at it. You can 16 00:00:45,520 --> 00:00:51,039 draw some insights. Uh, and you may have 17 00:00:48,640 --> 00:00:55,239 an idea of where I'm going with this, 18 00:00:51,039 --> 00:00:55,239 but you may be surprised 19 00:00:56,079 --> 00:01:01,120 and he clicks. So my journey started and 20 00:00:59,039 --> 00:01:03,520 this is a very personal journey uh over 21 00:01:01,120 --> 00:01:07,360 the last 12 months by sitting down with 22 00:01:03,520 --> 00:01:10,320 my son who's 12 and building a game 23 00:01:07,360 --> 00:01:13,119 using a coding assistant because I'd 24 00:01:10,320 --> 00:01:16,240 heard a lot about coding assistants and 25 00:01:13,119 --> 00:01:19,119 the term v coding and I really wanted to 26 00:01:16,240 --> 00:01:21,759 get my son into computer science and 27 00:01:19,119 --> 00:01:25,520 learning Python and so we built this 28 00:01:21,759 --> 00:01:28,880 game a cross between Pac-Man and Snake. 29 00:01:25,520 --> 00:01:32,680 He loved it and now he can't get enough 30 00:01:28,880 --> 00:01:32,680 of writing code. 31 00:01:33,200 --> 00:01:40,000 So I being the software engineer of uh 32 00:01:36,960 --> 00:01:42,720 20 odd years and I thought well what 33 00:01:40,000 --> 00:01:47,439 sort of code is this actually creating 34 00:01:42,720 --> 00:01:49,520 and so I used a a prompt and I wanted to 35 00:01:47,439 --> 00:01:52,079 introspect the code and see well how 36 00:01:49,520 --> 00:01:54,960 well is it structured 37 00:01:52,079 --> 00:01:58,079 and so using mermaid and the coding 38 00:01:54,960 --> 00:02:01,759 assistant I got the following class 39 00:01:58,079 --> 00:02:04,880 diagram and at this point I went wow 40 00:02:01,759 --> 00:02:06,240 that is quite It's impressive. Uh I 41 00:02:04,880 --> 00:02:07,920 remember creating class diagrams. 42 00:02:06,240 --> 00:02:09,520 Anybody here actually created a class 43 00:02:07,920 --> 00:02:12,239 diagram from scratch using the UML 44 00:02:09,520 --> 00:02:14,640 modeler? Took a bloody long time. Uh 45 00:02:12,239 --> 00:02:17,520 rational rows I believe is one of the 46 00:02:14,640 --> 00:02:20,800 classics. Um took a long time. 2 47 00:02:17,520 --> 00:02:24,319 minutes. It's pretty good. 48 00:02:20,800 --> 00:02:28,319 And then having seen all this, I went to 49 00:02:24,319 --> 00:02:31,760 where all uh developers go into Reddit 50 00:02:28,319 --> 00:02:34,239 uh developer humor and I saw something 51 00:02:31,760 --> 00:02:39,120 which was quite different than what I 52 00:02:34,239 --> 00:02:43,840 experienced um was a number of uh things 53 00:02:39,120 --> 00:02:45,440 about Vibe coding which weren't exactly 54 00:02:43,840 --> 00:02:47,840 um 55 00:02:45,440 --> 00:02:49,840 as interesting as I they were 56 00:02:47,840 --> 00:02:52,480 interesting and funny but uh not what I 57 00:02:49,840 --> 00:02:54,959 had experienced. And then digging a 58 00:02:52,480 --> 00:02:59,200 little bit deeper, I came across some 59 00:02:54,959 --> 00:03:03,760 articles around how um some people have 60 00:02:59,200 --> 00:03:06,159 had not had a very nice day uh vibe 61 00:03:03,760 --> 00:03:09,120 coding. Um 62 00:03:06,159 --> 00:03:10,879 I I especially like this one. Uh Paul's 63 00:03:09,120 --> 00:03:14,879 actually from Perth where I'm from. Uh 64 00:03:10,879 --> 00:03:18,959 and um but boy was it beautiful. And I I 65 00:03:14,879 --> 00:03:23,280 could absolutely uh understand that. 66 00:03:18,959 --> 00:03:26,640 And so I then dug a little bit deeper 67 00:03:23,280 --> 00:03:28,560 into this vibe coding thing and I came 68 00:03:26,640 --> 00:03:32,560 across this gem. I don't know if you've 69 00:03:28,560 --> 00:03:36,879 seen this vibe coding very inefficient 70 00:03:32,560 --> 00:03:40,799 but entertaining. Has anybody seen this? 71 00:03:36,879 --> 00:03:43,760 Lionus Torvald gold. Absolute gold. So 72 00:03:40,799 --> 00:03:49,840 Lionus is someone I respect deeply. And 73 00:03:43,760 --> 00:03:53,120 so again, I um I I was um I got more of 74 00:03:49,840 --> 00:03:55,599 a an idea uh of how software 75 00:03:53,120 --> 00:04:00,400 practitioners like myself were viewing 76 00:03:55,599 --> 00:04:02,239 uh this thing called vibe coding. 77 00:04:00,400 --> 00:04:04,400 And then I talked to a lot of developers 78 00:04:02,239 --> 00:04:07,439 in my career as a developer advocate. Uh 79 00:04:04,400 --> 00:04:09,360 and I'm hearing a lot of this uh from 80 00:04:07,439 --> 00:04:10,959 junior developers, early career 81 00:04:09,360 --> 00:04:12,959 developers, people coming out of 82 00:04:10,959 --> 00:04:14,959 university, they're going, Derek, what 83 00:04:12,959 --> 00:04:16,880 what does my career like look like? Is 84 00:04:14,959 --> 00:04:18,880 there even a job for junior developers 85 00:04:16,880 --> 00:04:22,720 anymore? And this concerned me even 86 00:04:18,880 --> 00:04:25,360 more. Um so 87 00:04:22,720 --> 00:04:27,360 we're at a crossroads. 88 00:04:25,360 --> 00:04:30,320 Are we going to think about taking the 89 00:04:27,360 --> 00:04:33,840 blue pill and continuing down the vibe 90 00:04:30,320 --> 00:04:36,160 vibe coding path or are we going to 91 00:04:33,840 --> 00:04:39,040 ignore it completely and continue in our 92 00:04:36,160 --> 00:04:42,639 own way of creating code? And so this is 93 00:04:39,040 --> 00:04:45,120 the journey that I've just been on 94 00:04:42,639 --> 00:04:47,280 and this is the talk that I've built to 95 00:04:45,120 --> 00:04:49,280 describe it. So my name is Derek. I'm a 96 00:04:47,280 --> 00:04:52,639 developer advocate at AWS. I've been 97 00:04:49,280 --> 00:04:56,240 writing code for more than two decades. 98 00:04:52,639 --> 00:04:58,880 Um, and I've built a lot of 99 00:04:56,240 --> 00:05:02,000 applications. I've had a lot of fun in 100 00:04:58,880 --> 00:05:04,240 this career. And I want to explain to 101 00:05:02,000 --> 00:05:06,240 you how I see it evolving because it is 102 00:05:04,240 --> 00:05:08,000 evolving. There's nowhere to hide. 103 00:05:06,240 --> 00:05:10,479 Things are changing. You can build a 104 00:05:08,000 --> 00:05:12,720 snake game in two minutes. You know, 105 00:05:10,479 --> 00:05:16,080 things are changing. 106 00:05:12,720 --> 00:05:17,840 So, I started uh like most of us of my 107 00:05:16,080 --> 00:05:20,400 generation reading this book about 108 00:05:17,840 --> 00:05:22,080 software craftsmanship. when I uh 109 00:05:20,400 --> 00:05:24,400 graduated and started building 110 00:05:22,080 --> 00:05:27,360 applications, it was all about craft 111 00:05:24,400 --> 00:05:30,400 craftsmanship. Coding is a craft and I 112 00:05:27,360 --> 00:05:32,720 firmly believe that still it is about 113 00:05:30,400 --> 00:05:35,680 building something that works that when 114 00:05:32,720 --> 00:05:38,800 you put it into the hands of the your 115 00:05:35,680 --> 00:05:40,639 paying customers, it works. And if you 116 00:05:38,800 --> 00:05:42,720 want to change it, you can change it 117 00:05:40,639 --> 00:05:45,360 pretty easily based on the features that 118 00:05:42,720 --> 00:05:47,440 they want. It is a craft. I still 119 00:05:45,360 --> 00:05:52,080 believe that. 120 00:05:47,440 --> 00:05:54,080 But when I started the craft was more 121 00:05:52,080 --> 00:05:57,840 around 122 00:05:54,080 --> 00:06:00,000 creating uh code in vi. So this I was 123 00:05:57,840 --> 00:06:03,360 started off as a Java programmer. Java 124 00:06:00,000 --> 00:06:05,919 1.1 believe it or not. And this is how I 125 00:06:03,360 --> 00:06:08,240 coded in vi 126 00:06:05,919 --> 00:06:10,240 painful. When I look at that now, I 127 00:06:08,240 --> 00:06:13,600 recorded this uh yesterday or the day 128 00:06:10,240 --> 00:06:17,919 before and uh I couldn't believe how 129 00:06:13,600 --> 00:06:21,120 much it it hurt just to do a static main 130 00:06:17,919 --> 00:06:23,520 entry point to a Java program. 131 00:06:21,120 --> 00:06:26,240 It took it took actually uh I timed as 132 00:06:23,520 --> 00:06:28,800 well two two minutes and then once we've 133 00:06:26,240 --> 00:06:31,520 coded it I then I had to compile it if 134 00:06:28,800 --> 00:06:33,600 we were using compiler language and then 135 00:06:31,520 --> 00:06:35,520 we had to run it 136 00:06:33,600 --> 00:06:37,440 and imagine building a software system 137 00:06:35,520 --> 00:06:39,759 like that 138 00:06:37,440 --> 00:06:42,639 takes time yes there's a craft involved 139 00:06:39,759 --> 00:06:45,280 but the craft is sometimes caught in the 140 00:06:42,639 --> 00:06:49,120 detail of the code 141 00:06:45,280 --> 00:06:51,440 and then after getting out of vi um I 142 00:06:49,120 --> 00:06:53,919 still use vi actually we got into 143 00:06:51,440 --> 00:06:55,680 evolved into ideides and it became a lot 144 00:06:53,919 --> 00:06:57,680 easier because we didn't have to switch 145 00:06:55,680 --> 00:06:59,360 contexts you know we were in the editor 146 00:06:57,680 --> 00:07:02,080 we could compile it we could run it 147 00:06:59,360 --> 00:07:05,280 inside the IDE saved us a bit of time we 148 00:07:02,080 --> 00:07:06,880 could concentrate bit more on our craft 149 00:07:05,280 --> 00:07:09,520 and then through my career it did not 150 00:07:06,880 --> 00:07:13,840 start in the 70s just to point that out 151 00:07:09,520 --> 00:07:15,440 um but I have wrote cobalt um and 152 00:07:13,840 --> 00:07:18,639 throughout my career I have done a lot 153 00:07:15,440 --> 00:07:20,880 of these uh languages I've written and 154 00:07:18,639 --> 00:07:22,080 working software with quite a lot which 155 00:07:20,880 --> 00:07:25,759 scares me when I put this slide 156 00:07:22,080 --> 00:07:27,840 together. Um, and now we're in the next 157 00:07:25,759 --> 00:07:31,360 evolution and this is this is what I'm 158 00:07:27,840 --> 00:07:34,960 seeing is I haven't actually written 159 00:07:31,360 --> 00:07:37,599 anything in code uh for 12 months. I've 160 00:07:34,960 --> 00:07:39,840 been writing everything in prompts which 161 00:07:37,599 --> 00:07:42,000 is is quite an evolution for me and 162 00:07:39,840 --> 00:07:44,319 quite confronting. And so this was the 163 00:07:42,000 --> 00:07:47,280 prompt I used with my son to create the 164 00:07:44,319 --> 00:07:50,720 Pac-Man game. Uh, so if you don't know, 165 00:07:47,280 --> 00:07:54,319 Nibbles is the name of Snake. 166 00:07:50,720 --> 00:07:57,680 Yeah. Um, and so this is actually the 167 00:07:54,319 --> 00:07:59,440 the one and only prompt I we wrote um to 168 00:07:57,680 --> 00:08:00,960 get the basics of the game. We had to 169 00:07:59,440 --> 00:08:02,319 fix up some of the game play with a 170 00:08:00,960 --> 00:08:03,919 number of prompts, different prompts, 171 00:08:02,319 --> 00:08:06,000 but that's just the nature of what we 172 00:08:03,919 --> 00:08:07,919 did. 173 00:08:06,000 --> 00:08:10,319 And so, 174 00:08:07,919 --> 00:08:12,319 as I said, it's time to investigate this 175 00:08:10,319 --> 00:08:15,440 thing. it's time to see what it would 176 00:08:12,319 --> 00:08:17,759 take to create a crafted piece of 177 00:08:15,440 --> 00:08:20,639 software using these agents. And so 178 00:08:17,759 --> 00:08:23,120 that's what I started to investigate. 179 00:08:20,639 --> 00:08:26,560 And so over a number of months, I've 180 00:08:23,120 --> 00:08:28,800 started to use different AI agents in 181 00:08:26,560 --> 00:08:30,720 coding assistants and I've came up with 182 00:08:28,800 --> 00:08:33,039 a way that works for me. And what 183 00:08:30,720 --> 00:08:35,680 actually works for me might be different 184 00:08:33,039 --> 00:08:37,760 from you. So the best way to demonstrate 185 00:08:35,680 --> 00:08:41,680 that is through a little flash demo I 186 00:08:37,760 --> 00:08:45,040 put together. So it's a very simple CRUD 187 00:08:41,680 --> 00:08:48,000 slask application that you log in, you 188 00:08:45,040 --> 00:08:51,440 create an element. Uh but the one thing 189 00:08:48,000 --> 00:08:53,600 I want to focus on is there is a missing 190 00:08:51,440 --> 00:08:55,360 feature. So I put this like we would in 191 00:08:53,600 --> 00:08:57,519 the real world. We put this in front of 192 00:08:55,360 --> 00:08:59,360 our customer and the customer after a 193 00:08:57,519 --> 00:09:01,760 day goes it's rubbish. I want this 194 00:08:59,360 --> 00:09:04,320 feature that you've never thought about. 195 00:09:01,760 --> 00:09:07,519 And in this case, I'm going to talk 196 00:09:04,320 --> 00:09:10,399 about the delete feature because I have 197 00:09:07,519 --> 00:09:11,920 an app. I can create stuff, but I can't 198 00:09:10,399 --> 00:09:14,320 delete stuff. So that's the feature 199 00:09:11,920 --> 00:09:17,440 that's missing. 200 00:09:14,320 --> 00:09:20,480 And so the first powerful thing that I 201 00:09:17,440 --> 00:09:22,480 found with these AI coding assistants is 202 00:09:20,480 --> 00:09:24,800 introspection. 203 00:09:22,480 --> 00:09:26,720 So if I had been given this application 204 00:09:24,800 --> 00:09:28,000 uh and told Derek, "This is the 205 00:09:26,720 --> 00:09:30,640 application. Go fix it." I'm like, 206 00:09:28,000 --> 00:09:32,640 "What's Flask?" I'd be googling Flask. 207 00:09:30,640 --> 00:09:35,600 I'd be going uh trying to work out what 208 00:09:32,640 --> 00:09:37,760 Flask is. But the within the assistant, 209 00:09:35,600 --> 00:09:39,279 you stay inside the IDE. So no context 210 00:09:37,760 --> 00:09:43,920 switching, 211 00:09:39,279 --> 00:09:46,320 it speeds things up. I'm faster. Um 212 00:09:43,920 --> 00:09:48,800 also, if you look inside the well 213 00:09:46,320 --> 00:09:52,000 doumented Flask app that's created with 214 00:09:48,800 --> 00:09:53,760 zero documents, zero uh docs, you can 215 00:09:52,000 --> 00:09:55,279 actually document it as well. And the 216 00:09:53,760 --> 00:09:59,279 assistants are pretty good at doing this 217 00:09:55,279 --> 00:10:02,800 as well. Uh so here I'm I'm actually 218 00:09:59,279 --> 00:10:06,160 doing an introspect at a a function 219 00:10:02,800 --> 00:10:10,320 level and so it'll tell you what the 220 00:10:06,160 --> 00:10:13,279 function does and at every line that's 221 00:10:10,320 --> 00:10:17,200 that's handy as well. A if you've never 222 00:10:13,279 --> 00:10:18,640 used Flask before, B if you're um early 223 00:10:17,200 --> 00:10:20,160 creators developer who doesn't know 224 00:10:18,640 --> 00:10:21,760 Python, 225 00:10:20,160 --> 00:10:24,560 this will tell you exactly what this 226 00:10:21,760 --> 00:10:26,720 function is doing. Super handy. 227 00:10:24,560 --> 00:10:29,440 And then finally adding docs because 228 00:10:26,720 --> 00:10:36,079 docs are good uh really good at doing 229 00:10:29,440 --> 00:10:38,800 that. So I found this super helpful. 230 00:10:36,079 --> 00:10:41,519 And then the next bit that I found 231 00:10:38,800 --> 00:10:43,200 helpful is adding features. And so this 232 00:10:41,519 --> 00:10:45,279 is where the agentic functionality of 233 00:10:43,200 --> 00:10:47,360 these coding assistants comes in where 234 00:10:45,279 --> 00:10:49,120 you can define 235 00:10:47,360 --> 00:10:51,120 um the details of a feature that you 236 00:10:49,120 --> 00:10:54,880 want to add to an application. And so 237 00:10:51,120 --> 00:10:57,600 this I'm in my prompt land again. 238 00:10:54,880 --> 00:11:01,360 Add a new method to remove an item. 239 00:10:57,600 --> 00:11:03,519 Update HTML and code. 240 00:11:01,360 --> 00:11:06,560 And even the SQL query uh in the 241 00:11:03,519 --> 00:11:09,360 persistence layer. And so the agentic 242 00:11:06,560 --> 00:11:11,760 flow will some agents if you let them 243 00:11:09,360 --> 00:11:14,640 will do it for you all in one step. I 244 00:11:11,760 --> 00:11:16,720 like verifying um call me oldfashioned 245 00:11:14,640 --> 00:11:18,240 but uh I like verifying what they're 246 00:11:16,720 --> 00:11:21,519 trying to do, what they're planning to 247 00:11:18,240 --> 00:11:24,640 do. And so I let this agent go. It it it 248 00:11:21,519 --> 00:11:26,959 it um tells me that it's reviewing um 249 00:11:24,640 --> 00:11:29,600 number of files. This is uh Amazon Q 250 00:11:26,959 --> 00:11:31,920 developer inside um Visual Studio Code 251 00:11:29,600 --> 00:11:34,000 as a plug-in. 252 00:11:31,920 --> 00:11:35,680 And so as it goes through works out what 253 00:11:34,000 --> 00:11:38,880 it wants to do, tells me what what files 254 00:11:35,680 --> 00:11:42,640 it wants to change. I then have control 255 00:11:38,880 --> 00:11:44,720 over what I I am happy with it doing. So 256 00:11:42,640 --> 00:11:46,720 a lot of the feedback that we're seeing 257 00:11:44,720 --> 00:11:48,320 uh and I showed earlier where the agents 258 00:11:46,720 --> 00:11:50,640 are getting into an infinite loop and 259 00:11:48,320 --> 00:11:53,200 really create really uh doing not very 260 00:11:50,640 --> 00:11:56,079 much uh not very quickly we can control 261 00:11:53,200 --> 00:11:59,839 and I think control is important and so 262 00:11:56,079 --> 00:12:01,440 as the um the file changes are um put 263 00:11:59,839 --> 00:12:04,800 through by the agent I can approve and 264 00:12:01,440 --> 00:12:06,480 deny as as I would uh any code review 265 00:12:04,800 --> 00:12:08,240 and then of course like any good 266 00:12:06,480 --> 00:12:10,560 developer I test my change which I 267 00:12:08,240 --> 00:12:12,800 didn't write any code for but I did 268 00:12:10,560 --> 00:12:16,399 build it I think And I think that's key. 269 00:12:12,800 --> 00:12:18,320 I'm still crafting this application. 270 00:12:16,399 --> 00:12:20,639 Uh I test it and the delete 271 00:12:18,320 --> 00:12:23,680 functionality is there. So that's that's 272 00:12:20,639 --> 00:12:25,760 how I'm starting to evolve my uh 273 00:12:23,680 --> 00:12:30,399 working. 274 00:12:25,760 --> 00:12:33,680 So let's try and address the gap between 275 00:12:30,399 --> 00:12:35,279 what we're being sold the I'm hearing 276 00:12:33,680 --> 00:12:37,760 lots of quotes that they will take over 277 00:12:35,279 --> 00:12:40,480 the world, developers are dead, the end 278 00:12:37,760 --> 00:12:43,279 is now, and what the reality actually 279 00:12:40,480 --> 00:12:45,600 is. And I think that needs to be clearly 280 00:12:43,279 --> 00:12:48,639 um defined. 281 00:12:45,600 --> 00:12:53,200 And so I'm hearing three key things. The 282 00:12:48,639 --> 00:12:56,480 first one is AI will replace developers. 283 00:12:53,200 --> 00:12:59,440 Now if the example I showed you 284 00:12:56,480 --> 00:13:02,880 previously, you'll notice that I knew 285 00:12:59,440 --> 00:13:05,600 exactly how to prompt that tool. If you 286 00:13:02,880 --> 00:13:08,720 put that tool in the hands of someone 287 00:13:05,600 --> 00:13:11,120 who did not have a level of experience 288 00:13:08,720 --> 00:13:13,200 that I had, you would get a very 289 00:13:11,120 --> 00:13:15,600 different result. It would not be as 290 00:13:13,200 --> 00:13:18,720 efficient. Uh you would not get to 291 00:13:15,600 --> 00:13:21,360 production as quickly. AI will not 292 00:13:18,720 --> 00:13:23,519 replace developers. It is a tool for 293 00:13:21,360 --> 00:13:25,360 developers. This is nonsense. And if I 294 00:13:23,519 --> 00:13:28,880 could swear, I would. I feel very 295 00:13:25,360 --> 00:13:32,079 strongly about this. 296 00:13:28,880 --> 00:13:35,680 But I also hear the the flip on this AI 297 00:13:32,079 --> 00:13:39,680 code generated is inferior. Now again 298 00:13:35,680 --> 00:13:44,120 that is nuanced, incredibly nuanced. Um 299 00:13:39,680 --> 00:13:44,120 the code that it generates 300 00:13:44,160 --> 00:13:50,639 can be inferior if it's not supplied the 301 00:13:48,000 --> 00:13:52,480 right context in the right knowledge 302 00:13:50,639 --> 00:13:54,639 about the application that it's updating 303 00:13:52,480 --> 00:13:57,440 or building. 304 00:13:54,639 --> 00:14:00,560 So it can in fact generate inferior 305 00:13:57,440 --> 00:14:03,199 code. But the person who is the 306 00:14:00,560 --> 00:14:06,800 developer or the engineer who is telling 307 00:14:03,199 --> 00:14:10,720 it what to do is the one who dictates 308 00:14:06,800 --> 00:14:13,600 how good that code is. 309 00:14:10,720 --> 00:14:15,920 And then finally the saddest part. Uh 310 00:14:13,600 --> 00:14:19,199 learning to code is pointless. This 311 00:14:15,920 --> 00:14:22,560 makes me incredibly sad. Um learning to 312 00:14:19,199 --> 00:14:25,120 code is absolutely not pointless. The 313 00:14:22,560 --> 00:14:28,240 only reason that this application works 314 00:14:25,120 --> 00:14:31,600 that I showed you in the demo is I 315 00:14:28,240 --> 00:14:33,600 looked at all the changes the AI told me 316 00:14:31,600 --> 00:14:36,240 that it was going to make and I verified 317 00:14:33,600 --> 00:14:38,480 them. I was able to verify them because 318 00:14:36,240 --> 00:14:41,360 I know how to code. 319 00:14:38,480 --> 00:14:43,279 Yes, I could use the AI to introspect. 320 00:14:41,360 --> 00:14:45,519 Excuse me. 321 00:14:43,279 --> 00:14:47,440 I I could use the AI to introspect code 322 00:14:45,519 --> 00:14:50,320 and understand the code and that would 323 00:14:47,440 --> 00:14:52,720 give me a level of knowledge, but I 324 00:14:50,320 --> 00:14:55,680 still need to know how to code. I need 325 00:14:52,720 --> 00:14:58,240 to know how to compose an application. I 326 00:14:55,680 --> 00:15:00,079 need to know about how if this 327 00:14:58,240 --> 00:15:02,639 application was talking to an API that 328 00:15:00,079 --> 00:15:04,959 was remote, best ways to res to make 329 00:15:02,639 --> 00:15:09,519 that resilient, best ways to do backoff 330 00:15:04,959 --> 00:15:11,120 retry. I need to know this information. 331 00:15:09,519 --> 00:15:13,760 Yes, the AI can teach me this 332 00:15:11,120 --> 00:15:17,519 information if I don't know it, but I 333 00:15:13,760 --> 00:15:21,120 need to know at some stage. 334 00:15:17,519 --> 00:15:23,600 And what I'm saying is controversial. Uh 335 00:15:21,120 --> 00:15:26,399 I hope it's not. I think this will be 336 00:15:23,600 --> 00:15:28,959 the way we go forward is more AI 337 00:15:26,399 --> 00:15:30,480 actually equals more developers 338 00:15:28,959 --> 00:15:33,760 because 339 00:15:30,480 --> 00:15:35,680 of a thing that happened many years ago. 340 00:15:33,760 --> 00:15:38,079 So this is called the Jevans paradox. 341 00:15:35,680 --> 00:15:42,959 Has anybody heard of the Jevans paradox? 342 00:15:38,079 --> 00:15:45,360 Yes, my friend. Too magnificent. So the 343 00:15:42,959 --> 00:15:47,839 Jevans paradox comes from the industrial 344 00:15:45,360 --> 00:15:49,360 revolution where something happened. 345 00:15:47,839 --> 00:15:52,880 Well, lots of things happened, but one 346 00:15:49,360 --> 00:15:55,440 key thing happened. This is a steam 347 00:15:52,880 --> 00:15:59,519 engine. And steam engines are very 348 00:15:55,440 --> 00:16:02,399 efficient at making power from coal. And 349 00:15:59,519 --> 00:16:03,920 when they f were first created, 350 00:16:02,399 --> 00:16:08,160 um, 351 00:16:03,920 --> 00:16:09,839 the industry as a whole was like, well, 352 00:16:08,160 --> 00:16:12,639 as these steam engines are more 353 00:16:09,839 --> 00:16:15,199 efficient in power powering things, I'm 354 00:16:12,639 --> 00:16:20,000 from Ireland, so my W's are quite hard 355 00:16:15,199 --> 00:16:23,519 to say, powering uh things, then we need 356 00:16:20,000 --> 00:16:25,120 less coal. What happened was quite the 357 00:16:23,519 --> 00:16:27,680 opposite. 358 00:16:25,120 --> 00:16:29,839 uh the industry demanded more steam, 359 00:16:27,680 --> 00:16:32,000 more power. They needed more steam 360 00:16:29,839 --> 00:16:35,120 engines. And so what did what happened? 361 00:16:32,000 --> 00:16:37,920 Demand for coal went up. 362 00:16:35,120 --> 00:16:40,560 And so the same thing will happen for 363 00:16:37,920 --> 00:16:42,639 developers and engineers. What these 364 00:16:40,560 --> 00:16:45,839 coding assistants and jai are creating 365 00:16:42,639 --> 00:16:47,920 is efficiencies. So we can get things to 366 00:16:45,839 --> 00:16:50,639 market quicker. 367 00:16:47,920 --> 00:16:53,639 Erggo, the demand for our skills will go 368 00:16:50,639 --> 00:16:53,639 up. 369 00:16:54,240 --> 00:17:00,880 But it's on us to evolve. 370 00:16:58,240 --> 00:17:02,560 And how can we evolve? 371 00:17:00,880 --> 00:17:04,319 Well, first of all, there are problems 372 00:17:02,560 --> 00:17:07,120 that have not been solved. There are new 373 00:17:04,319 --> 00:17:09,839 terms and skills that you must learn. 374 00:17:07,120 --> 00:17:11,839 I'll highlight a few. There are many. 375 00:17:09,839 --> 00:17:15,839 The first one is a term that I've I've 376 00:17:11,839 --> 00:17:20,319 coined called token theft. So if you 377 00:17:15,839 --> 00:17:22,559 give an AI assistant ultimate uh perfect 378 00:17:20,319 --> 00:17:24,079 context, perfect knowledge about the 379 00:17:22,559 --> 00:17:26,240 application you're building and a 380 00:17:24,079 --> 00:17:28,960 perfect prompt to do what you wanted to 381 00:17:26,240 --> 00:17:31,520 do, it can still hallucinate. It can 382 00:17:28,960 --> 00:17:34,720 still give you nonsense, it can still be 383 00:17:31,520 --> 00:17:37,760 wrong. But what's it done by doing that? 384 00:17:34,720 --> 00:17:40,799 It is stolen your tokens because all 385 00:17:37,760 --> 00:17:43,760 these AI assistants need and work on and 386 00:17:40,799 --> 00:17:45,440 and cost models are on per token. So 387 00:17:43,760 --> 00:17:47,760 it's stolen your token. How do we fix 388 00:17:45,440 --> 00:17:49,679 that? That is something that has not 389 00:17:47,760 --> 00:17:51,440 been solved. 390 00:17:49,679 --> 00:17:53,919 Checkpointing. 391 00:17:51,440 --> 00:17:56,240 These AI systems write code really fast. 392 00:17:53,919 --> 00:17:58,640 Really, really fast. You need to slow 393 00:17:56,240 --> 00:18:01,360 down. You need to checkpoint. You need 394 00:17:58,640 --> 00:18:05,280 to say prompt. What's it created? 395 00:18:01,360 --> 00:18:06,799 Verify. Okay, let's go. Checkpoint here. 396 00:18:05,280 --> 00:18:08,480 So many people I've talked to don't know 397 00:18:06,799 --> 00:18:10,640 how to use Git, but they're they're vibe 398 00:18:08,480 --> 00:18:12,480 coding their hearts out. Good luck to 399 00:18:10,640 --> 00:18:16,160 them. 400 00:18:12,480 --> 00:18:18,080 Checkpointing very key. And then things 401 00:18:16,160 --> 00:18:19,760 like pair programming. These are 402 00:18:18,080 --> 00:18:21,280 fundamental software development 403 00:18:19,760 --> 00:18:23,520 practices. 404 00:18:21,280 --> 00:18:26,799 They can be used in this context and be 405 00:18:23,520 --> 00:18:29,440 used very very well. Pair programming 406 00:18:26,799 --> 00:18:32,880 one. Somebody writes the code, somebody 407 00:18:29,440 --> 00:18:35,039 writes the tests. In AI land, get a 408 00:18:32,880 --> 00:18:36,880 model to generate the code if if you 409 00:18:35,039 --> 00:18:39,280 need it, get a different model to 410 00:18:36,880 --> 00:18:41,039 generate the tests, 411 00:18:39,280 --> 00:18:42,559 verify, 412 00:18:41,039 --> 00:18:44,400 and there are many others that will come 413 00:18:42,559 --> 00:18:47,039 along come up as we go down this 414 00:18:44,400 --> 00:18:49,039 evolution. 415 00:18:47,039 --> 00:18:51,760 One of them that has just been released 416 00:18:49,039 --> 00:18:53,440 is spectriven. So spec driven 417 00:18:51,760 --> 00:18:55,679 development is something that has come 418 00:18:53,440 --> 00:18:57,679 up in the last couple of months and it's 419 00:18:55,679 --> 00:19:00,400 all about giving 420 00:18:57,679 --> 00:19:03,120 um structure to this chaos the chaos 421 00:19:00,400 --> 00:19:05,600 that I'll I'll call vibe coding. Uh and 422 00:19:03,120 --> 00:19:08,240 what it does is at its heart is that 423 00:19:05,600 --> 00:19:10,400 implementation bit. So prompting, 424 00:19:08,240 --> 00:19:12,799 getting the output that you want from 425 00:19:10,400 --> 00:19:14,720 the from the assistant and then 426 00:19:12,799 --> 00:19:17,440 verifying, 427 00:19:14,720 --> 00:19:19,200 but up front you're giving it better 428 00:19:17,440 --> 00:19:20,720 context, better understanding of what 429 00:19:19,200 --> 00:19:23,280 you're trying to build. You're helping 430 00:19:20,720 --> 00:19:26,000 it. And that's where the specifications 431 00:19:23,280 --> 00:19:27,840 come in, more information about the 432 00:19:26,000 --> 00:19:31,679 application that you're building. That 433 00:19:27,840 --> 00:19:34,320 then feeds into what the um the the AI 434 00:19:31,679 --> 00:19:37,440 assistant is generating. And then of 435 00:19:34,320 --> 00:19:40,160 course we test everything. So we then go 436 00:19:37,440 --> 00:19:43,120 through that test cycle and before 437 00:19:40,160 --> 00:19:45,280 finally deploying structure around the 438 00:19:43,120 --> 00:19:46,960 vibe coding chaos 439 00:19:45,280 --> 00:19:50,799 and that's the bit that's called spec 440 00:19:46,960 --> 00:19:52,480 driven. Now if anybody's like me and has 441 00:19:50,799 --> 00:19:57,520 written software for a long time this is 442 00:19:52,480 --> 00:20:02,160 waterfall development 101. Hooray. Um 443 00:19:57,520 --> 00:20:05,200 and then into maintenance. So waterfall 444 00:20:02,160 --> 00:20:07,679 is a very old way of uh building 445 00:20:05,200 --> 00:20:09,600 software and it's now come back again. 446 00:20:07,679 --> 00:20:13,679 Now this will evolve as well. We'll get 447 00:20:09,600 --> 00:20:16,320 the V model. We'll get um high um 448 00:20:13,679 --> 00:20:17,840 iterative uh techniques as well. But 449 00:20:16,320 --> 00:20:22,720 this is where we're currently starting 450 00:20:17,840 --> 00:20:25,440 with these um AI assistants. And the the 451 00:20:22,720 --> 00:20:28,240 tool that I'm using to do that is Kira 452 00:20:25,440 --> 00:20:29,760 uh that we've released about six months 453 00:20:28,240 --> 00:20:31,760 ago. 454 00:20:29,760 --> 00:20:33,200 But there's other tools, right? I'm not 455 00:20:31,760 --> 00:20:35,200 here to talk to you about what tools are 456 00:20:33,200 --> 00:20:38,000 good for you. I want you to find out 457 00:20:35,200 --> 00:20:40,559 because every engineer and developer in 458 00:20:38,000 --> 00:20:42,320 this room needs to evolve and it's your 459 00:20:40,559 --> 00:20:44,240 personal evolution. I've went through 460 00:20:42,320 --> 00:20:47,039 mine. It's time for you to go through 461 00:20:44,240 --> 00:20:50,480 yours. So, assistants, I've used Kira 462 00:20:47,039 --> 00:20:52,080 and I've used QD in these um demos. 463 00:20:50,480 --> 00:20:54,159 There's also client, excellent 464 00:20:52,080 --> 00:20:56,559 assistant, and cursor and many, many 465 00:20:54,159 --> 00:20:58,480 more. I can't talk about the rest. I've 466 00:20:56,559 --> 00:21:02,080 just used those. 467 00:20:58,480 --> 00:21:04,559 There's a link there to Kira, but also 468 00:21:02,080 --> 00:21:07,200 to give these a these agents are 469 00:21:04,559 --> 00:21:09,039 actually built on agent frameworks. It's 470 00:21:07,200 --> 00:21:11,200 really interesting and you should 471 00:21:09,039 --> 00:21:13,600 understand what these agentic frameworks 472 00:21:11,200 --> 00:21:15,520 are and build one yourself. Gives you a 473 00:21:13,600 --> 00:21:17,840 great insight into what these coding 474 00:21:15,520 --> 00:21:20,720 assistants are doing and even how you 475 00:21:17,840 --> 00:21:24,400 can change them. So two that I've I've 476 00:21:20,720 --> 00:21:28,080 used uh are both Python uh strands and 477 00:21:24,400 --> 00:21:31,120 pedantic AI worth looking at and there's 478 00:21:28,080 --> 00:21:34,799 a link there to strands and then finally 479 00:21:31,120 --> 00:21:36,880 how to extend these agents how to um 480 00:21:34,799 --> 00:21:38,480 make them work for your use case and 481 00:21:36,880 --> 00:21:39,760 currently there's two ways you can do 482 00:21:38,480 --> 00:21:43,600 that. There's actually three but two 483 00:21:39,760 --> 00:21:46,159 that I've used MCP and A2A. 484 00:21:43,600 --> 00:21:49,120 And if you're curious about how to use 485 00:21:46,159 --> 00:21:51,200 strands and MCP together, I'm giving a 486 00:21:49,120 --> 00:21:52,960 workshop on Monday and we're going to 487 00:21:51,200 --> 00:21:55,960 build something with those two 488 00:21:52,960 --> 00:21:55,960 frameworks. 489 00:21:56,880 --> 00:22:03,440 So what is my key takeaways from today's 490 00:22:00,400 --> 00:22:06,799 talk? If you've listened to nothing else 491 00:22:03,440 --> 00:22:11,679 uh than my Irish accent is humans are 492 00:22:06,799 --> 00:22:16,480 important. Craftsmen are still valid and 493 00:22:11,679 --> 00:22:19,360 a AI agent cannot craft. We craft. We 494 00:22:16,480 --> 00:22:22,080 are important. 495 00:22:19,360 --> 00:22:24,880 And this is a quote from a very large 496 00:22:22,080 --> 00:22:27,120 aentic AI CEO. 497 00:22:24,880 --> 00:22:29,760 Uh with AI 498 00:22:27,120 --> 00:22:32,320 he hears that with AI we can replace all 499 00:22:29,760 --> 00:22:33,760 of our junior people in our company. I 500 00:22:32,320 --> 00:22:35,360 was like that's one of the dumbest 501 00:22:33,760 --> 00:22:37,520 things I've ever heard. And I actually 502 00:22:35,360 --> 00:22:38,960 agree with this quote. And I was 503 00:22:37,520 --> 00:22:42,880 surprised that this came from Matt 504 00:22:38,960 --> 00:22:44,720 Garmin, who is the CEO of AWS. That is a 505 00:22:42,880 --> 00:22:47,760 fact. 506 00:22:44,720 --> 00:22:49,520 So, back to our car. 507 00:22:47,760 --> 00:22:52,080 My first ever job, I worked for a very 508 00:22:49,520 --> 00:22:55,280 large airline, and there were people 509 00:22:52,080 --> 00:22:57,039 driving in in sports cars, really fancy 510 00:22:55,280 --> 00:23:00,080 sports cars, and the number plate was 511 00:22:57,039 --> 00:23:01,679 Cobalt One. I was like, "Who are these 512 00:23:00,080 --> 00:23:04,640 people?" I just started. Who are these 513 00:23:01,679 --> 00:23:07,440 people? and they're like, "Derek, these 514 00:23:04,640 --> 00:23:09,919 are the cobalt programmers. 515 00:23:07,440 --> 00:23:14,559 They are fixing up all the legacy Cobalt 516 00:23:09,919 --> 00:23:16,880 code um that the company has created. 517 00:23:14,559 --> 00:23:19,280 They're also and I'm saying, well, poor 518 00:23:16,880 --> 00:23:22,240 them. Uh they don't know how to use 519 00:23:19,280 --> 00:23:24,960 Java." And and I was told in no 520 00:23:22,240 --> 00:23:28,240 uncertain terms, yes, they do. They just 521 00:23:24,960 --> 00:23:32,960 make more money fixing cobalt, hence the 522 00:23:28,240 --> 00:23:35,360 cars. So the number plate is important. 523 00:23:32,960 --> 00:23:38,640 There will always be work for developers 524 00:23:35,360 --> 00:23:41,440 and engineers in future. Maybe fixing up 525 00:23:38,640 --> 00:23:43,520 all the vibe coding mistakes that people 526 00:23:41,440 --> 00:23:45,440 thought that was a good idea at the 527 00:23:43,520 --> 00:23:47,039 time. Maybe when the first feature drops 528 00:23:45,440 --> 00:23:51,280 from their customers and they have no 529 00:23:47,039 --> 00:23:56,360 idea what that vibing has created. 530 00:23:51,280 --> 00:23:56,360 Now go build. Thank you. 531 00:24:06,000 --> 00:24:08,000 Thank you very much, Derek. 532 00:24:07,039 --> 00:24:10,320 Thank you. 533 00:24:08,000 --> 00:24:12,000 Here is your mug. 534 00:24:10,320 --> 00:24:14,000 Thank you so much for your time. Uh, we 535 00:24:12,000 --> 00:24:16,080 have a few minutes for questions, uh, if 536 00:24:14,000 --> 00:24:18,640 people would like to ask them. Um, I'm 537 00:24:16,080 --> 00:24:20,159 going to grab the roaming mic and come 538 00:24:18,640 --> 00:24:22,000 and chase you all. Uh, we've got one up 539 00:24:20,159 --> 00:24:25,120 the front here and another one up the 540 00:24:22,000 --> 00:24:26,960 front there. Go for that one first. 541 00:24:25,120 --> 00:24:27,679 Thanks for the talk, Derek. Great talk. 542 00:24:26,960 --> 00:24:29,840 Pleasure. 543 00:24:27,679 --> 00:24:31,600 Um, I'm involved with behavior-driven 544 00:24:29,840 --> 00:24:34,720 design testing, building a hold of tests 545 00:24:31,600 --> 00:24:37,360 for 3D CAD programs. And to me, the 546 00:24:34,720 --> 00:24:40,080 challenge, if all this vibe coding goes 547 00:24:37,360 --> 00:24:42,320 ahead and goes really well, we still 548 00:24:40,080 --> 00:24:44,720 need what we can do as humans to put 549 00:24:42,320 --> 00:24:48,559 together those corner cases and things. 550 00:24:44,720 --> 00:24:51,279 How can AI come up with really good 551 00:24:48,559 --> 00:24:53,600 tests as short the smallest set of 552 00:24:51,279 --> 00:24:55,120 really good tests especially to catch 553 00:24:53,600 --> 00:24:57,279 those corner cases? 554 00:24:55,120 --> 00:25:01,200 Yeah, 100%. So I I have been thinking 555 00:24:57,279 --> 00:25:04,240 about BDD intensely uh over my 12-month 556 00:25:01,200 --> 00:25:06,640 journey because that is the answer right 557 00:25:04,240 --> 00:25:07,919 we have not we've had have not I don't 558 00:25:06,640 --> 00:25:10,960 know the answer to your question first 559 00:25:07,919 --> 00:25:14,640 of all uh but there is absolute avenue 560 00:25:10,960 --> 00:25:17,760 for BDD to have a strong influence in 561 00:25:14,640 --> 00:25:22,400 where we go with this I absolutely 562 00:25:17,760 --> 00:25:24,960 agree um yes it is a just like the 563 00:25:22,400 --> 00:25:25,919 waterfall techniques BDD and and prayer 564 00:25:24,960 --> 00:25:27,919 programming 565 00:25:25,919 --> 00:25:30,960 BDD and those techniques that we've 566 00:25:27,919 --> 00:25:33,120 learned over years that work that that 567 00:25:30,960 --> 00:25:37,039 make sure our our software works we need 568 00:25:33,120 --> 00:25:40,039 to harness uh in the AI domain as well. 569 00:25:37,039 --> 00:25:40,039 Yeah. 570 00:25:41,039 --> 00:25:43,200 Hi Derek. Thanks for your talk. 571 00:25:42,720 --> 00:25:45,840 Pleasure. 572 00:25:43,200 --> 00:25:47,440 Um I noticed that in your VI coding 573 00:25:45,840 --> 00:25:50,159 coding example you didn't commit your 574 00:25:47,440 --> 00:25:52,080 code before letting the AI edit it. I'm 575 00:25:50,159 --> 00:25:54,400 always scared of the AI deleting stuff, 576 00:25:52,080 --> 00:25:55,760 so I always commit before. But um then 577 00:25:54,400 --> 00:25:57,360 you addressed it later in the slides, 578 00:25:55,760 --> 00:25:57,760 right? Like Git's really important. 579 00:25:57,360 --> 00:25:59,679 Yes. 580 00:25:57,760 --> 00:26:02,080 Um 581 00:25:59,679 --> 00:26:05,360 I think I wanted to ask Yeah. Do you 582 00:26:02,080 --> 00:26:07,039 think we might need something even 583 00:26:05,360 --> 00:26:08,799 better than Git? Something that's 584 00:26:07,039 --> 00:26:11,120 tailored so that the AI can actually 585 00:26:08,799 --> 00:26:12,720 read it without spending a ton of tokens 586 00:26:11,120 --> 00:26:14,320 reading your entire Git history. 587 00:26:12,720 --> 00:26:17,919 Something that's optimized. Yes. 588 00:26:14,320 --> 00:26:20,400 So they can do that better. And um 589 00:26:17,919 --> 00:26:22,480 also so you can see the commits that are 590 00:26:20,400 --> 00:26:24,000 from the AI and the commits that have 591 00:26:22,480 --> 00:26:26,880 been the bits of the code that have been 592 00:26:24,000 --> 00:26:29,919 read by humans and edited by humans and 593 00:26:26,880 --> 00:26:31,840 yes 100%. So I had a good discussion in 594 00:26:29,919 --> 00:26:33,840 Seattle about this very thing a couple 595 00:26:31,840 --> 00:26:36,960 of weeks ago. Uh that's why I termed it 596 00:26:33,840 --> 00:26:38,960 checkpointing and not committing and git 597 00:26:36,960 --> 00:26:41,840 using git specifically. I think the 598 00:26:38,960 --> 00:26:44,480 evolution of how we do that is not a 599 00:26:41,840 --> 00:26:45,919 simple git commit. it is more complex 600 00:26:44,480 --> 00:26:50,799 than that and more subtle and more 601 00:26:45,919 --> 00:26:52,720 nuanced. Um, and so that will evolve. 602 00:26:50,799 --> 00:26:54,559 That slide was all about we haven't we 603 00:26:52,720 --> 00:26:56,559 haven't got a a fix for them or we don't 604 00:26:54,559 --> 00:26:58,240 know how to do it yet. And checkpointing 605 00:26:56,559 --> 00:26:58,640 is one of them. 606 00:26:58,240 --> 00:27:01,640 Thanks. 607 00:26:58,640 --> 00:27:01,640 Thanks. 608 00:27:04,000 --> 00:27:09,679 Thanks so much Derek. Excellent talk. 609 00:27:06,480 --> 00:27:12,000 Um, we started at a point where we had 610 00:27:09,679 --> 00:27:14,799 software craftsmanship. 611 00:27:12,000 --> 00:27:16,799 Now we have vibe coding that is creating 612 00:27:14,799 --> 00:27:18,000 code at the speed of tokens. 613 00:27:16,799 --> 00:27:21,919 Yes. Nice. 614 00:27:18,000 --> 00:27:25,679 How does it change us as developers, as 615 00:27:21,919 --> 00:27:30,000 engineers, as creators of things that 616 00:27:25,679 --> 00:27:33,760 are more disposable, more throwable away 617 00:27:30,000 --> 00:27:36,400 and further away from a craft? 618 00:27:33,760 --> 00:27:38,320 I disagree. So that was the whole intent 619 00:27:36,400 --> 00:27:41,520 of this talk was to to highlight that 620 00:27:38,320 --> 00:27:46,240 we're not disposable. Um, we are still 621 00:27:41,520 --> 00:27:48,799 crafts people. We still understand 622 00:27:46,240 --> 00:27:50,559 um what we're trying to do. We 623 00:27:48,799 --> 00:27:52,320 understand 624 00:27:50,559 --> 00:27:55,200 how we're trying to get where we're 625 00:27:52,320 --> 00:27:59,039 getting, right? We have insights. We 626 00:27:55,200 --> 00:28:03,200 have knowledge. Um, we we can build 627 00:27:59,039 --> 00:28:05,279 things. An AI assistant just does what 628 00:28:03,200 --> 00:28:07,840 we tell it. It's a n it's a nick word 629 00:28:05,279 --> 00:28:09,760 prediction algorithm, right? That is not 630 00:28:07,840 --> 00:28:12,320 a creation algorithm. You know, you look 631 00:28:09,760 --> 00:28:17,039 at the AI slop that's out there. Code is 632 00:28:12,320 --> 00:28:19,200 no different. An artist or and a creator 633 00:28:17,039 --> 00:28:22,240 can use the tools that are there to be 634 00:28:19,200 --> 00:28:27,120 more efficient, but ultimately 635 00:28:22,240 --> 00:28:29,039 still you still need us in the loop. 636 00:28:27,120 --> 00:28:30,159 Uh I think we'll we'll leave it there. 637 00:28:29,039 --> 00:28:31,039 We've got about a minute, but I don't 638 00:28:30,159 --> 00:28:32,559 think it's going to be enough time for 639 00:28:31,039 --> 00:28:33,760 another question. So, thank you so much, 640 00:28:32,559 --> 00:28:34,399 Derek, for your time. Are you going to 641 00:28:33,760 --> 00:28:36,080 be around for the rest of the 642 00:28:34,399 --> 00:28:38,480 conference? So I'll I'll be at the AWS 643 00:28:36,080 --> 00:28:40,399 stand all day and tomorrow and the 644 00:28:38,480 --> 00:28:43,200 workshop on Monday. So come have a chat 645 00:28:40,399 --> 00:28:45,200 and uh love to talk to tough about 646 00:28:43,200 --> 00:28:47,200 software development techniques p 647 00:28:45,200 --> 00:28:47,840 practices. Love it. Love those 648 00:28:47,200 --> 00:28:49,039 conversations. 649 00:28:47,840 --> 00:28:52,279 Thanks very much Derek. One more big 650 00:28:49,039 --> 00:28:52,279 round of applause.