Sculpt, not Spec
Scott Hanselman
0:04 When you and I re-run code that uh number of minutes per speaker.
0:09 Oh, that's a good idea.
0:10 We should do that.
0:11 The the market's got to talk too much.
0:14 No, Scott talks too much.
0:19 [laughter]
0:20 Actually, that's a good point though.
0:21 That could be a live a live repair.
0:23 The thing is though,
0:24 that's a great example of so for for context for folks that are watching
0:30 uh there was a question about which of us spoke too long in these things.
0:34 So I went and I wrote uh Mark It was no question.
0:36 Too much.
0:37 There was no question.
0:38 There's no question.
0:38 It was pretty pretty unambiguous.
0:40 Well, you were like, "No, we're about half and half." And Dude,
0:43 okay, so I'm I'm looking at the code here.
0:45 It was 10 months ago that we did this.
0:48 Wow.
0:49 So uh this is the uh GitHub Mark and talk too much repository.
0:56 The thing that's funny about Yeah, I did a whole thing about this.
0:59 Uh-huh.
1:00 I think that's funny about these kind of things is
1:02 that you will find that um you will find that it
1:08 isn't the code that that the two rehydrate this from 10
1:11 months ago won't be like um dependencies or anything like that.
1:16 It's going to be whatever codes have expired between
1:20 that and you know now and then whatever whatever
1:22 piece of uh of of personal access token that I
1:27 need to get back into It's always the rehydration.
1:32 And you don't remember.
1:33 I don't remember any of these things.
1:37 Yeah.
1:37 [music] [music] Yeah.
1:52 All right, so then what are you doing right now?
1:55 [clears throat]
1:54 I am running a new analysis on um on Mark and Scott and see who talks the most.
2:00 So Uh [clears throat] what did you have to do to get it rehydrated and do this?
2:03 So so this is a great actually a great segue.
2:06 You would think I would be smart
2:07 enough to have markdown files explaining the project.
2:10 I just said refamiliarize yourself with the project
2:13 and re- and run it again on the latest content.
2:16 The only docs I had because this is 10 months ago when we did this.
2:20 Um this is probably pre-Opus even.
2:24 It is quite old on Sonic.
2:26 Yeah.
2:26 I have interactive guide which is basically a user guide of you
2:32 are a visualization and you do this and here's how to use it.
2:36 But there's really not a lot here.
2:38 I should have ran you know,
2:40 I should have made this a skill of some kind, you know.
2:43 There was no such thing back then.
2:45 Well, yeah, not not not that anyone had
2:47 really got together and thought about it, right?
2:49 Was it called skill?
2:50 Yeah.
2:51 Oh, do you use a lot of skills?
2:53 No.
2:54 Do you?
2:56 No.
2:57 So this is where I think we're going to get in trouble
2:58 and people are going to call us a bunch of posers.
3:00 All right, so two things we can talk about.
3:02 One skills versus MCP versus CLIs.
3:10 Uh okay.
3:12 I'm just thinking I use a lot of CLIs.
3:13 Yeah, like that's a big part of my workflow.
3:16 And uh the other one is agents.md and inspect.md.
3:25 Which it's so funny they're just text files just loosen
3:28 around like someone I've heard people people that we know,
3:31 people of note who have said that they make
3:34 these exquisite plan files like they're they don't write code anymore.
3:38 They write big long markdown files.
3:40 All right, so you want to start on that one first?
3:41 The specs Yeah, I think it's worth talking about
3:43 because I think it's it's just not my workflow.
3:46 I like I love a nice uh a nice plan.
3:50 It's good to spec stuff out, but I prefer to um I don't know what I want.
3:55 I kind of know a direction I want to go
3:57 and I So you're not very similar in this way.
4:01 Yeah.
4:01 Um and we talked about this before that that I view writing software
4:08 whether it's handcrafting it like the old days or prompting it as sculpting.
4:14 Mhm.
4:14 Because I can't like let's just take um ZoomIt.
4:20 Um I'll Panoramas not a good one,
4:22 but the video editor the video editor That was a complicated thing.
4:26 Probably one of the most complicated things I've seen done.
4:29 That one you'd think oh video clip editor easy thing to just go and fully
4:34 spec out and then give it to the AI and say go make this.
4:37 But I didn't I wasn't sure exactly how I wanted it to work.
4:41 So I had a vague idea.
4:43 Yeah, I want the video and I want play and forward buttons and a timeline.
4:49 But I didn't know exactly how I wanted them to look.
4:51 I didn't know exactly what I wanted the the clicks flow to look to be like.
4:57 So uh I I would have been a waste of time for me to say go do this.
5:03 Let me spec it out and then go wait a minute.
5:05 I don't like that and let me have to undo a whole bunch of things.
5:09 Instead of let's start with the basic and then I'll go from there.
5:12 Couldn't someone argue that that's like a lack of depth in thinking
5:15 that you should have like steepled your fingers and sat there and like closed
5:19 your eyes and thought deeply about what you wanted and then specked it out
5:22 and then done it or is that like waterfall applied to AI augmented programming?
5:28 That's a good point.
5:28 It is water That is exactly what waterfall is as opposed to agile.
5:32 I'm very agile.
5:33 You are very agile.
5:34 I've seen I've seen you like light your feet, too.
5:36 Um but no, that's that's exactly what it is.
5:39 You know um let's take the uh video
5:42 recorder stuff that I added the webcam overlay.
5:46 And you're like, "Hey,
5:47 you should be able to record it at 4 by 3 or whatever." Mhm.
5:51 Yeah, I asked I wanted you to have aspect ratio locking.
5:54 Yeah, that's something that I thought of afterward.
5:57 Um Yeah, so I am I I I'm constantly tweaking.
6:06 I'm constantly playing with it and going no, I don't like that.
6:08 I need to be able to to click this and I need I want
6:11 this option and I and this dialogue will be You called it sculpting, right?
6:16 Like it's like that idea that Michelangelo and you're not
6:19 Michelangelo by the way and I've worked with Michelangelo and you
6:22 Well, he's dead.
6:22 So I'm glad I'm not him.
6:23 It's true.
6:24 Um but this idea that like you've got this block of marble
6:28 and within the block is David and you're looking for him.
6:31 Yeah.
6:32 Like if you think about when um uh
6:35 what's his name discovered Jason um Donald not Donald.
6:41 I forgot his name.
6:42 He used to hang out with him all the time.
6:44 Anyway, the guy that made Jason the the the format.
6:46 He didn't say he invented it.
6:49 Uh he said that he discovered it.
6:51 Douglas Crockford.
6:52 Yeah.
6:52 So you're discovering you're you're carving you're
6:55 you're kind of like sculpting this thing
6:57 and you're having a conversation The whole point is to have a conversation.
7:02 I I saw a gentleman fight with Peter Steinberger Peter Steinberger
7:06 the famous open claw creator and the guy was like, "Yo,
7:10 I I make a very complicated perfect plan.md and I get
7:13 it exactly the way I want." He's effectively programming in English.
7:18 And then he says, "Do it." And that's
7:20 his interaction with the with the with the LLM.
7:23 It's like, "Well, that's not really helpful.
7:25 The interaction with the LLM should be an interaction not a compile step.
7:31 So I'm kind of rejecting that.
7:33 There's balance to be clear.
7:36 But it just seems weird to me to try
7:37 to get the plan perfect cuz that sounds like programming.
7:41 Also, I think the other problem um and this is really where
7:45 the fundamentals come into play is
7:47 that it's impossible to provide a comprehensive spec.
7:51 You know what I think one of the things even
7:53 in the traditional software engineering approach of the product managers write
7:58 the spec and then the devs go and work on it
8:01 is that there's always communication and iteration there even with the spec.
8:06 Yeah.
8:07 The developers go, "Hey, how's this look?" Well,
8:09 no, that's not exactly what I meant.
8:11 And it's because human language is just too abstract.
8:14 And Bingo.
8:16 The other aspect of it is do you want to put in the spec like "Hey,
8:20 performance you know,
8:21 I'm going to completely spec it from a performance perspective,
8:24 from reliability perspective, from a feature perspective uh from a what
8:30 tool what packages you can use perspective, from what architecture perspective,
8:35 like all of the different aspects that go into crafting the thing." Mhm.
8:41 Are you going to go write the 50-page document
8:43 that has every single one of the those things specified?
8:46 And by the way, when this happens, this should happen.
8:49 And when that happens, that should happen.
8:50 And by the way, this edge case throw an exception or this edge case you know,
8:56 like it's just a I've I it's just a huge I think waste
9:01 of time because you're just not even going to get it all right anyway.
9:05 So what do you think about these spec kit
9:07 inspect driven development and specify and all these different things?
9:10 Like I think it's kind of ironic that we
9:12 have this and I've been calling it the ambiguity loop.
9:16 We've got this ambiguity loop and if things are left ambiguous,
9:18 it will be filled with the statistical mean.
9:21 And that's that's a benefit.
9:22 That's actually what makes this better.
9:24 You can be less specific and it'll fill it it'll fill the the the specificity
9:29 hole with a reasonable default and then maybe that's right, maybe it's not.
9:35 But to do spec driven development just sounds
9:37 like coding and specifying everything and that that doesn't
9:42 use the very thing that LLMs are good
9:44 at which is filling spaces of ambiguity with really good point.
9:47 I'll tell you on the panorama stitch thing the hardest
9:50 project I've I've done so far for AI assisted coding.
9:55 I didn't even like I I spent my first spec for it was here's what I want,
10:01 you know, panorama scroll, whatever.
10:03 And it immediately said,
10:05 you know what I you can't do a pixel by pixel comparison,
10:07 so I'm going to use Luma, which is brightness of pixel regions,
10:12 and use that as the the the fundamental approach.
10:15 And it it knew that presumably from other
10:19 places where people have done something similar
10:21 that it learned from during its training
10:23 or maybe when it searched online for ideas.
10:26 Mhm.
10:27 I wasn't aware of that approach um as being the best way to do it.
10:32 Now, it's uh implementation was a giant fail.
10:37 Like and I had to sit and push it and guide it and like here's
10:41 another case that need you need to handle and this isn't working and you need
10:47 to and I think one of the things that I mentioned in the LinkedIn post that I
10:51 wrote about this is that it didn't automatically
10:55 come up with how it should test this.
10:57 Mhm.
10:58 And so I had to guide it as I saw hey,
11:01 this thing is actually much more complicated than I
11:03 thought to say record all the images and record
11:07 your steps um in a file in a directory a debug directory for each one of these.
11:14 And then what I could do is have it go back and replay the stitch.
11:19 And I could see, you know, like hey,
11:21 you um go replay on the last five um and take a look and then tell me
11:26 if you take a look good and I'll go take a look and then it would say,
11:29 oh, things are looking great.
11:30 And I'd go look and be like, no, there's artifacts here and there's stretching
11:34 here and there's repeat black spaces here.
11:36 And they'll like, oh, I missed that.
11:38 Um and uh or I caused a regression.
11:42 Um and then I would go try other things and say,
11:44 here's one that failed, go and and see if you can fix it.
11:47 And it would replay it and that that way I could verify it.
11:49 So the and I can't just imagine that AI's
11:52 going to get so good that it's thinking proactively
11:54 about absolutely every potential case that could come up
11:58 where it's it's just automatically handling all these things.
12:02 And you know uh regardless of whether it does
12:06 that doesn't take away this the sculpting part of it.
12:09 Um Yep, exactly.
12:11 I recently had an interesting problem where my son
12:14 is selling um clothing online and he wanted a lookbook.
12:19 And he thought it was just going to be like a regular gallery of the pictures.
12:22 But he has like a hundred shots from his little fashion show that they did.
12:27 And his company is called infinite something.
12:29 And I thought it'd be cool to have like
12:31 imagine Google Maps tiles of all of the different pictures.
12:36 And then you can zoom in and zoom out and scroll and throw and run around.
12:40 So it'd be an infinitely tiled thing.
12:44 And I specked it out,
12:45 which I thought was very specific at about three three paragraphs because
12:49 he gave me a folder full of a hundred 13 meg raw files.
12:55 So there's pre-processing of the JPEGs,
12:58 there's tile creation at different zoom levels.
13:02 And it has to work on mobile and all of those kind of things.
13:05 And I specked it out and I did it in one shot and it was perfect.
13:09 And then I started scrolling around and it guaranteed relative memory.
13:14 Yeah.
13:14 And then I put it on an iPhone and you
13:17 move it like two inches and it immediately loses loses memory.
13:21 Cuz then you've got viewport and you have decay and you
13:24 have speed and you have all these kind of things.
13:26 And I got the whole thing done in about eight turns.
13:29 But it was really interesting how the first turn worked perfectly Yeah.
13:34 until it completely didn't work at all.
13:36 And then the following seven turns were the Yeah.
13:40 But why would it anticipate all those things, Scott?
13:42 How could it, right?
13:44 Yeah.
13:45 And it's a great example, whether it be the panorama or my thing,
13:48 where it's like, yeah,
13:49 it sounds like it sounds easy cuz it can be conceived easily.
13:53 But just because it can be conceived easily doesn't
13:55 mean that the edge cases will not absolutely destroy you.
13:58 Yeah.
13:59 Yeah.
13:59 I think that's what we forget about the edge cases.
14:01 Edge cases and polish, too.
14:03 Like I that's a lot of polish.
14:05 Like this needs to work like this, this needs to be this responsive.
14:09 Oh, I want to be able to add multiple
14:12 papers in a ref checker rather than just one.
14:15 That's something I came up with after the original spec.
14:18 Oh, and that requires some change to the architecture,
14:20 by the way, to support that.
14:22 Um by the way, turns out 10 months ago I'm
14:24 looking at our Mark and Scott talk too much thing.
14:27 Uh we had ingested the transcripts by putting them into foundry.
14:33 And that's what did our speaker identification.
14:35 And that project no longer exists.
14:37 I think it got deleted.
14:39 So I now it's 10 months later.
14:41 I have to re- architect how we do
14:44 speaker inference because YouTube um transcripts are free now.
14:50 I don't have to go and pay for a transcription service.
14:52 But YouTube uh doesn't do uh speaker inference.
14:56 So I might have to do like a whisper
14:58 model or a local model to determine who's talking.
15:00 Yeah.
15:02 So I'm just letting you know that like this is a great
15:04 another great example of like software
15:06 engineering is like hydrating an old project.
15:08 And by the way, this is a great example of the people that are like,
15:11 no, everybody just fly code everything.
15:13 Fly code my unique thing.
15:15 Um and the software's free now.
15:20 No, it's not free.
15:21 In fact, you wanted to keep this thing working, it requires maintenance.
15:26 Not just from hey, it's something broke architecturally, but The keeping
15:30 uh you've got to do security and I Yep.
15:34 Keeping this thing working is a huge huge point.
15:38 Uh I've got software that will run for months
15:41 and then it just just stop and it's like, why?
15:44 Personal access token expired.
15:46 Azure function stuff, you know, fell asleep.
15:48 It needs to be kicked.
15:50 Like it's your garden and it needs to be weeded regularly.
15:55 Yeah, every project If you wanted to live, you you have to maintain it.
16:00 There comes with some cost.
16:02 Yeah.
16:02 I think I [clears throat] told you a while back that I vibed the back end
16:05 for my my podcast and um I went there
16:10 recently and it had um it's my admin back end.
16:14 And there was a um a crypto JavaScript file
16:17 sitting in in in in the in the main project.
16:21 I got [laughter] hacked.
16:21 I got Dude, I got hacked.
16:23 I had I have all these API routes and one of them was not secured.
16:29 And somebody posted a file and it sucked it in and it dropped it
16:31 right into the main folder and started serving crypto BS to my admin site.
16:37 Like people like we weeds and dandelions will come over the fence
16:41 and drop directly into your your backyard and the next thing you know,
16:44 you're like, what happened?
16:46 And it's just because I hadn't looked at the thing
16:47 in a couple of weeks and you know, I would have noticed it.
16:51 Yeah.
16:51 So software is not free.
16:53 No, it's not.
16:54 So okay.
16:55 So I'm interested in the folks in the comments,
16:57 if you made it this far, if you are make a spec,
17:01 write out the markdown file, if you're fooling yourself, that's a little spicy,
17:05 into thinking that markdown and prose is a programming language.
17:09 So if you imagine that that that gradient between do
17:12 it all as a spec and try to one shot it or if you have no spec and you just kind
17:17 of like figure it out or if it's somewhere in the middle.
17:20 I I would put myself somewhere in the middle.
17:22 That's By the way, the other problem that I've had
17:25 every time I do uh spec driven development where it
17:27 goes creates that markdown and it has the tasks is
17:31 that the AI inevitably skips things and says it's done.
17:35 And I every time I've tried it and I don't you know,
17:39 I think AI is going to get good enough where
17:40 it stops doing that, but at least the current AIs,
17:43 it's been my experience that it thinks it finished the spec when it didn't.
17:50 Um is the we'll probably call this a show
17:52 and move to the next topic in a minute,
17:54 but I'm curious uh if you find the multitasking to be the worst part about this.
17:58 I think you're kind of a single tasker, right?
18:00 Don't you like Mhm.
18:02 Uh focusing on one thing.
18:03 How many projects are you running at once?
18:05 Cuz I'm starting to get a headache more than three to five projects.
18:07 Yeah.
18:08 We talked about this last time.
18:09 I think this week spot is three.
18:11 Yeah, three is the sweet spot.
18:13 Four.
18:13 And actually there was a study that came
18:14 out right after we had that episode, you remember?
18:17 And it said brain fry happens at four.
18:20 Human at four projects and they they found Mhm.
18:24 productivity [clears throat] would increase up to three projects
18:28 at at the same time and then collapse at four.
18:32 Yep.
18:33 Which um which is my personal experience as well.
18:36 Yeah, I agree.
18:36 I think I think it's funny to watch
18:39 humans fool themselves into thinking that they are unique.
18:42 The master I'm the master.
18:43 I've got a hundred I'm big on multitask.
18:45 I'm not I'm built different.
18:46 I'm built different.
18:47 No, you're not.
18:48 Like millions of years of evolution mean you're not built different.
18:51 You you are not multitasking.
18:52 You are you are context switching quicker.
18:55 I don't know.
18:55 How many How many times have you heard people go,
18:57 I've got a hundred agents right now working on it stuff for me.
19:01 It's it's the review fleet of agents.
19:04 Man, I've got so much stuff to review right now.
19:06 Like the code is no longer the problem.
19:08 The reviewing the code for BS is the problem.
19:11 Yeah.
19:11 And that takes time.
19:12 Like even, you know, take like the Zoom at panorama thing.
19:14 I've like got to go and test it at myself
19:16 to see and review it and the zombie edge cases.
19:20 So when do you think the industry is going to figure that out?
19:22 Because I would argue that leadership and leadership would be
19:26 the set of all people who are not you and I Yeah.
19:29 uh need to understand that you can't make people 10x more productive.
19:33 It's just not a thing.
19:34 10x more productive is not a thing because at some point you
19:37 got to stop and you got to like look at the the content.
19:40 Well, yeah, and I also we talked
19:41 about there's fundamental bottlenecks in software engineering.
19:45 Yep.
19:45 Which include things like how long does it take to build the thing?
19:48 How long does it take to run the tests run the thing?
19:51 Yeah.
19:52 And then how much work do I have to do on maintaining the thing?
19:57 Um that all is going to eat into you know
19:59 that you it's like I talk about it like Amdahl's law.
20:03 I don't know if you you know what Amdahl's law is.
20:05 Amdahl's law that sounds like a Lord of the Rings reference.
20:07 It's actually a computer science reference
20:10 which is uh when parallel programming started
20:14 to get popular in the 70s and 80s people would take a look and say,
20:17 "Well, here's part of the program
20:19 that actually gets um it's it's perfectly scalable.
20:24 You throw 10 CPUs at it, it's going to be 10x faster.
20:27 But you know what?
20:27 The beginning the the code that comes before it or the stuff
20:32 that comes before it or the stuff that comes after that's linear.
20:36 Um that's not going to get any speed up.
20:38 That needs to be done sequentially.
20:40 And so your maximum speed up isn't 10x, it's some fraction because you've got
20:46 these non-scalable portions of the task or part
20:49 And I assume that as I'm talking the approach is some maximum speed up
20:52 and you can keep throwing processors at it
20:53 but it's now a context switching problem, right?
20:55 Which I don't know Amdahl's law.
20:57 just take half half of it is perfectly scalable, half of the task isn't.
21:01 So what's your maximum speed up?
21:03 So the curve probably speed up is half.
21:05 Like
21:06 Yeah, it probably kind of starts slow, has a vague big thing and then evens out.
21:09 Yeah.
21:10 So this I don't I didn't know it as Amdahl's law but we used to say,
21:13 you know, nine women can't have a baby in a month.
21:16 Yeah.
21:17 They they can't throw resources at a problem and have it parallel, right?
21:20 Yeah, exactly.
21:22 Okay.
21:23 Well, um so that's the show.
21:25 Uh we have to have a formal ending here
21:27 because we tend to putter out at the end.
21:30 I want to always appreciate our favorite uh listeners and our favorite watchers.
21:35 If you made it this far you are better than your peers.
21:40 [laughter] And I need you to know that.
21:42 Uh [clears throat] so we thank you very much.
21:43 We thank you for listening.
21:44 Leave a comment, like, and subscribe.
21:46 Comments are appreciated.
21:47 We love the comments.
21:49 Yeah, smash that bell.
21:51 Like and subscribe.
21:52 But most importantly,
21:53 the number one thing you can do is help us out by telling people about
21:55 the show because Mark falls into an emotional
21:58 funk when the show doesn't have enough views.
22:01 So please feed our massive egos by sharing
22:05 this [music] with your friends if you think it's useful.
22:07 And LinkedIn is a great place to share the show.
22:09 two friends.
22:10 At least two friends.
22:11 Everyone is required if you made it this far
22:13 to share with at least two friends Yeah.
22:14 and family members.
22:16 And also hi to my mom [music] who watches the show and texts me.
22:20 You're She does.
22:21 She texts me every week.
22:22 She says, "You're a nice friend, Mom.
22:23 You know, actually Mark is he's so nice." She doesn't know the real you.
22:30 Bye.
22:32 She's totally going to text me after this.
22:34 I guarantee it.