How'd you like to listen to dot net rocks with no ads? Easy? Become a patron For just five dollars a month, you get access to a private RSS feed where all the shows have no ads. Twenty dollars a month will get you that and a special dot net Rocks patron mug. Sign up now at Patreon dot dot NetRocks dot com. Hey, welcome back to dot net rocks. I'm Carl Franklin and A'mirchrid Campbell, and we're recording this right before we leave for dev Intersection in Orlando. But you are not home, sir.
No, No, It'll all have been over by then. It'll almost be, you know, Halloween, so right, I'll be in the Netherlands when this publishes, so something.
But right now, you're not at home, are you?
I am, Yeah, I'm leaving. Oh you are. Literally we're recording a show and then I'm packing up to head to the mainland tomorrow. Okay, see you in Orlando, dude.
All right, Okay, I thought you were on a trip before.
Maybe you were.
I don't know. I can't keep track of you. I don't even want to.
Yeah, me neither. I don't even know where I am, Wait a minute, are you?
Who are you? What'd you do with Richard Mind?
I'm just another AI.
Yeah right, uh well, let's you know, since this is episode nineteen seventy four, let's talk about what happened that year, shall we before we do anything else.
Oh, it's an exciting year. It's an exciting year. Nixon. Bye bye, Where do you want to start?
Bye bye Nixon. Yeah, he's not a crook, but he is resigning.
Are you sure? I don't know, I sound so sure?
Well he said so, yeah, okay, And you know, after that day, we didn't have Dick Nixon to kick around anymore. So I think he did for a while longer, but yeah, oh yeah, yeah, as long as I miss was alive, he was getting kicked on a daily basis.
Yeah.
The Turkish military invaded Cyprus following a coup, leading to a division of the island and increased international tensions.
Which still persists this day. That division in Cyprus.
The Carnation Revolution occurred in Portugal. That's a coup resulting in the overthrow of the authoritarian regime. So the FIFA World Cup took place in West Germany, where the host nation defeated the Netherlands two to one to win the championship. Just in case you were wondering, the boxing match known as the Rumble in the Jungle featured Muhammad Ali defeating George Foreman in Zaire. Ali would go forward to have a great after career life in George Foreman sold grills.
He did a lot more than that. He had seven kids, all named George. The Swedish pop group Abba won the Eurovision Song Contest with their song Waterloo, making the start of their successful career. Have you seen the Eurovision Song Contest recently, Richard?
Not recently, No, but I'm aware of it. You don't want to, okay.
Some significant the film's release include The Godfather Part two, Chinatown, and Blazing Saddles, all movies that probably couldn't be made today in my opinion. I'm going to talk about the Terracotta Warriors. The first of those were discovering Jiang, China, unbelievable, leading to significant archaeological finds. What do you know about the terracotta warriors, Richard.
I've been there, but just you know, I know that once they were exposed, they started to decay, like a lot of the paint was still on them. When they first were found, but.
They were made to with the with the emperor, I suppose in the grave to protect him, right.
Yeah, that's the that's the idea. Like nobody really knows for sure, but the Yeah, you'd have to see this thing. It's unbelievably vast. Yeah, and the crazy part is, like archaeology is not a huge thing in China, They've only done a little. There's so much more to be found there. And this is a culture that's been around literally for millennia. Yeah, you're talking these things are what two thousand or so years old, but there's so much more.
I think the crazy part is that people actually built thousands of terracotta warriors and stuffed them in a grave. Yeah, that's kind of crazy.
It speaks to the wealth of that country at that time, right that they could afford to do such just like building pyramids. Like, clearly you have too much money, right if you can build these things. But that, yeah, it's another example of that.
So what happened in science and Tech and seventy four Richard.
Not a big space year. Mariner ten made it to Mercury, the first probe to ever do that, actually do two flybys of Mercury, and that would be the only visit to Mercury in the twentieth century. That would be the Messenger spacecraft in the twenty first century. And that's about it. There's a couple of soused flights to sal you there's the plans for the Apollo Soy use missions, but they won't happen until the next year, so not a big year in space.
And like Venus, Mercury is not a very hospitable planet.
Well, it's awfully close to the Sun. It's very very hot, no atmosphere at all. Yeah, but still interesting, you know, and certainly something so we're studying further tricky to get to takes a lot of energy to get there.
Do we actually get data from it before it burned up? Oh yeah, No, it's not that close. Was able to orbit around fly bys Mercury. You know, going into orbit around Mercury is very challenging. We won't do that for quite some time.
The first reporting on the destruction of the ozone layer nineteen seventy four and will lead in a few years to the thing called the Montreal Accords. Well, we'll band CFC's and ultimate allow the ozone layer to repair itself a successful story and turns out it worked. It worked.
Yeah, I'm giving away the ending. We can do those kinds of things, people, We can. We absolutely can. And I use that as an example when we talk about the current crisses. The first edition of Dungeons and Dragons is published. Gary Gygax and Dave Arnison from TSR derived from an earlier game played with miniatures and went.
On to make geeks even geek here for many, many years. Oh yeah, but and I would say this is by far from in our part of the world. The most important thing happened in seventy four. Right at the end of nineteen seventy four, the mits altear eighty eight hundred. So this was not the only personal computer at the time. There were kits you could buy that would just be give you and you'd have to put together the parts and so forth. This was the first assembled machine based
on the Intel eighty eighty. The design would largely lead to the S one hundred bus machine. In general, you could only had to set at LEDs on the front end. You would program it with switches, or you could add a serial card to it to have a teletype interface. Otherwise just not display no keyboard under that stuff. Yeah, and it was popular electronics. Is this magazine that was actually driving One of their rival magazines had published this kit on their cover, and they wanted to make sure
they had something as well. So they were pushing and my admits to get this thing done in time. And so nominally it was on the cover of the January nineteen seventy five edition, but it was actually put on new stands in December seventy four, so I included the seventy four And why is it important? This is Microsoft's
founding product. That cover is the thing that got Gates to drop out of Harvard and moved to Albuquerque and write a version of Basic would later be known as the Altar Basic, which was Microsoft's very first.
Product, and he wrote it with the Altair.
He used the alt He actually wrote it on a different machine because he didn't have one. He wrote it on a machine at Harvard, a lot of it by hand and by hand figured it all out because they had to run in four K, and then brought it
down there and coated it in to test it. But the first time he already had it written before the first time he actually laid hand on an altar because there wasn't any of them, and the name Altar actually comes from the star Alta, although there's an apocryphal or adjacent story of the fact that around that same time, in the late seventies, the television show Star Trek had an episode on a mock time where they go to Altair six, and since it was a star of a technology,
they ought to have a cool name, not just a number, so they called it.
So I've seen pick of the Altear and you're right. It has like switches where you can turns the zeros into the ones on and then press the button to write it into memory. It kind of reminds me of a pressure cooker, you know, like, well, it's just a box, right, it's a issue here is it's turning over. It's before RAM exists. Yeah, so you had to hand key the bootloader. Wow, it was like one hundred and seventeen bytes something like that.
So you literally so booed up was a process. Was literally once you got that thing running, you didn't want to turn it off. Power goes out.
No, Yeah, and this is they weren't even using cassette tapes at this point. The first versions of Basic were on this paper tape with holes punched in it that they that the thing could read in to load up the version of Basic. It was a very small version of Basic because there's only four k RAM and you still have to run your program too, right, So.
They really only had mainframes before that, right, main four or less.
And many the PDPs are around, right, the mini computers, but they're all.
Using cards, so it makes sense that they would be using that technology.
He uses paper tape. And there's no copy of the original ALTA Basic. I think it exists anywhere. There is a version of the advanced version of that Basic in the Computer History Museum in the Silicon Valley, signed by Gates, and I think it was Gates's actual copy of it.
Wow.
And so yeah, yeah, the original original it starts the whole company.
I think it's gone. That's pretty crazy. Yeah, so the history of dot net starts in nineteen seventy four, doesn't.
Theoretically, I mean it's beginning of Microsoft. But yeah, yeah, all right in Albuquerque. Wow, good one.
So let's start then next with better no framework?
Awesome?
Al what you got? Do you use bitwarden? So do? I I love Bitwarden? Did you know that you can run it on prem Yeah.
Yeah, the open source product, right as it should be.
Yeah, I didn't know this, and then I found the Bitwarden server get repository and apparently you know, so, like I said, I didn't know it. I thought it was a product that you subscribe to, and it is. But if you want to run it yourself in.
There, you can use it for free or you can pay them like.
You and so what's really cool about this is that you know, hey, maybe we don't even want to trust bitwarden dot com with our passwords. Maybe we want to you know, keep all our data behind the firewall and wherever we want to put it, and you know, to be more secure. I mean, whether it is or not, I don't know, but at least that's an option. So you can download the server. It has all the APIs and everything that you need to run it. You can
even run it on a Windows machine. You can run it in Docker containers on a Windows machine if you want to. Of course, Linux and Mac it's all there. It's really really cool and.
If we have made it clear, it's a password manager. Yes, you know, you can buy commercial products like one passes and so forth. But This is also one I've fallen on too. I had to leave last pass when last pass went insane. Me too, Yeah, which, by the way, I found migrating off the last pass less painful than
I thought. Yep, I was dreading it. But the only real problem with a migrating from between password managers is at some point you're going to generate a CSV file of every single password in your life, and that will be upsetting. Well, the real way to do it is to just find the list of domains that you have passwords for in last past and go to each one of them and say, hey, I forgot my password, and
go through the whole process of generation. Yeah. I mean, it's a terrible thing to do if you've got hundreds of them, but you know, in the reality is you can migrate your passwords over the other one, but you should probably change me after that and do yourself a favor delete that file when you're done. Absolutely, that file shouldn't exist. That files bad. What file? Yeah, and I'm super keen to get to pass keys. I just think passkey's still a half baked so.
Yeah, they're not quite there yet. I like one global authenticator app would be really good.
For me. Yeah, I don't know.
Not nine authenticator apps, not ten?
Good luck with that.
Just one is all I want.
I think there's a I's pretty sure there's an SKCD cartoon about this. It's like, we need a standard for everything. Now there's ten. Yay, Yeah, that's right. Remember scuzzy SCSI. Yeah, wasn't one of the SA's standing for standard. Yes, that's yeah. You know, how would that work out? No, there are no standards. Everybody fights against them.
All right, Well that's what I got. Richard, who's talking to.
Us today, jumped into the wayback machine because we haven't talked about stuff like specification driven development in a long time, but we have talked about it. And I grabbed a comment off a show nine to twenty one. Wow, this is when we talked about the product Cucumber working with behavior driven development Matt Wins show back in twenty thirteen. We've got a ton of comments on that show. Not surprising. Yeah,
and gap has a Utz had this commed. He said, well, I had no real world experience with to driven development until now I've to use it on a new, relatively small project and we're now working on I'm really I'm trying to get to the place is what he's talking about,
where you have an executical specification. And I just thought this comment was really relevant because we think about what we're doing with prompting with lllms these days, as could almost be an executable specification rather than having a separate document. It's supposed to document what the system does, but it's always out of sync, like what's the what do we
make rules around all of this? But it would be cool to actually get on these large projects that we have a set of documentation that in this game were talking about. Cucumber generated the test to say does the
software does what it's supposed to do? But I, you know, now, thinking ten years on looking at gatus as common, I'm like, wow, look where we are right now with the next generation of tools and another way of thinking about how we write a specification about an application and then how that specification turns into executable code.
Cucumber was like all use cases, right, yeah, Like as a user, I want to be able to blay blah blah blah, and yeah, yeah, very cool.
Yeah, it was acceptance testing, right, You're supposed to be able to write it in English, Like I don't know. I'll include a link to cucumber. Folks want to take a look at it. It would take a minute for me to go back and look at this now, just thinking about what lms have done to this whole space. Sure, anyway, Gattis, thank you so much for your comment, and a copy of music code By is on its way to you. And if you'd like a copy of music cobe I, write a comment on the website at dot NetRocks dot
com or on the Facebook. We publish every show there, and if you comment there and I read in the show, I'll send you copy of music cobe.
I was just using music to code By to prepare for my talks nice next week, and it's still going strong. Twenty two tracks, twenty five minutes long, designed for the Pomodoro technique, but not necessarily. You don't have to have a clock.
You know.
They're neither boring or too exciting. They're just in that middle space. They're just too right. Get you into a state of flow and keep you there, okay. Den de la Marski is our guest. He is a principal product engineer currently working at Microsoft, where he helps build developer tools in AI powered experiences that make engineers more productive. Den started his engineering journey all the way back in the nineties.
Oh god, all the way back, all the way back, a long time ago.
All the way back in the nineties.
I did I tell you that I listened to your podcast when I was in middle school?
Oh my god.
Yeah, excuse me, take some geritol right now, Hang on a second.
Yeah, yeah, all right.
So in the nineties with the three eighty six box that was verily enough to run Doss games. He's upgraded since then. He has spent plenty of time writing code and visual basics six oh, but for more than two decades now he's writing see sharp and Python and there's more. Dan, welcome, thank you, so happy to be here. I'm such a fan of Dunn at Rocks.
That's great. Wow.
Well, after reading your bio, I'm a fan of yours TB six. I mean, I was there, we were there. I missed those days.
I missed the days of just me like popping an ID, using the forum, designers, dropping some progress bars on clicking the buttons and things are.
Just working well and not having to sign into an app.
Nice and not having to sign in Ye, that was a product that was made fun of. You know, it wasn't real programming back in the day, and we were crying all the way to the bank as we knocked out the things that our customers actually needed in less time.
I was there at BB one. Oh, I was there and quick Basic com pts Before.
That, Yeah, yeah, no, I spent I did my time in the in MFC crashing windows repeatedly and wondering what I was doing wrong. VB showed out like this is better.
What you do is you find yourself an MFCC plus plus programmer and then you just partner with them to do the hard stuff.
Yeah.
I gotta say, I just don't know that there was not that much stuff that was that hard. Like I love VB six, but you know, the one thing that just kind of annoyed me about it is when Windows XP came out and it had all these super nice styles and everything, and just VV six was constantly stuck in the Windows ninety five and I was like, oh, come on, man, Like, can I just get the nice progress bar, the nice button with the shadow.
And you could if you went third party. They all adapted their stuff. Yeah, they had read through everything, but.
I was broke and I had no money, I couldn't get that party. Well, and we didn't know that Microsoft was changing gears, right, like, yeah, that there wasn't going to be a VB seven right, Yeah.
Those were the days days of drama.
Yeah. So but that's talk to me about spec driven development, den What have you been up to here? What is this all? Right?
So folks might have seen that about a month ago, we work with our friends at get hub to release this thing called spec Kit. So if you go to get up dot com slash, get up slash spec dash Kit. Spec Kit is nothing super magical. It's basically a set
of templates, prompts, and scripts. And the whole purpose for that is that when we talk to folks that try to build software llms, like, there's a large swath of folks that are just very excited about the fact that, oh, I don't have to write boilerplate code, I don't have to write my tests from scratch because I can just you know, use quad code to do that stuff. So as we talk to more of these customers, especially customers and like bigger companies, customers that want to build something
that is going beyond what we refer to as vibe coding. Oh, I'm building a podcast landing page, like, oh, yeah, you can vibe code that in the day. If you're building a i don't know, like a CRM or like a plugin for a CRM, all of a sudden you're in the world of hurt because you're getting into this state of now I need to go and just constantly prompt for changes, and then things went off the rails and I need to go back somehow and then redo it.
But now I don't have any history. So for that we thought, okay, we have an idea for an experiment. What if all of this stuff can be encoded into specs? And this is idea as old as time, as kind of Richard called out like spectrum development and the idea of writing specs as the underlying kind of the layer of software is not exactly new like it existed for
some time. This is more of a it's a new incarnation of it and in this context, and by the way, a lot of this was also driven by one of my colleagues, John Lamb, who was inspired.
Yeah.
John Lamb is great from the Iron Python days. For folks that don't know, Yeah.
From a developmentor before that, I think yes.
Yeah.
So John was somewhat frustrated by the fact that Claude's Sonnet, the model from Anthropic, was very over eager.
When you'd give it coding test.
You'd be like, oh, can you like I'm building this new components, like oh, let me write this component, let me write all to the framework for this component and everything around it.
Yeah.
So the idea was like, well, can we put guardrails around it? So make sure that, like if I ask you to do this, you do just that. So this is what essentially bootstrapped spec Kit. This was the foundational pieces. It's like, how do we make the model a little bit more contained if you will to do the things that we want. And as we started kind of exploring this.
Couldn't you write a system prompt for Claude just to say, hey, state your lane and don't do anything I don't tell you to do.
You could, but then you're just always in this like cat and mouse game, right, and you're writing system prompts. So and by the way, it's also like if you switch models all of a sudden.
Like what what then? Like do I write a system prompt? So?
Okay?
Yeah, And also we live in a world where developer switch models, like every week there is I'm sure there's a model came out. Well, we're recording this that we did not know about this, this is somehow better or different
models for different applications exactly. So Speckett was born out of that entire need, and as we started kind of evolving it, things pop top from customer conversations like, oh, well, if I starting coding requirements, how do I make sure that my technical requirements are correctly updated if I decided
to change my tech stack. And that actually is one of the core value props of Speckett and the spectrum development here is that we're detaching the spect the requirements from code and from the tech stack, so that if you're a developer and previously you're like, Okay, I want to build a web app for my enterprise that does something like accounting, and I'm not entirely sure which framework is the most performed, is it next JS? Should I
use Astro? Should I be framework less entirely? Should I write this in just tailwin CSS for UI, shad CN.
And like, what would you have to do?
You'd have to go and write this in whatever stack and then maybe do some benchmarks and figure out like what's the performance. Now, because you have a spec you can just go and ask it to write you like three versions out of the same requirements. So you basically you start speed running the iteration process and saying, oh, create me like three options that I can choose from.
And that's kind of nice because now you have the requirements, they're separate from your technical requirements, and the LM can just build it for you and then you can assess it.
Cool.
So Cucumber plus AI, you could probably think.
It's basically simplify yes, instead of as a user I can is like as a large language model, I can.
Wow.
But I think you're also skipping over some hard bits here, which is you really have to granulize the specification. Yes, you want to take small enough bites at the LM has a shot at building this thing.
Success absolutely, And I think one of the biggest problems that we see with people trying to approach spectro of development is actually, like, first of all, the problem is under specification because if you are not yet comfortable writing specs or understanding.
What you're building and why, you're.
Gonna fall into the pit of under specification and what happens when you underspecify things. The AI starts guessing and it's like, oh, sure, like you did not tell me that you do not want the header to be green. I'll make it like whatever color I choose, right, And I think this is like it's a it's a mental shift, right. You previously have to get into the mode of like, oh, I'll just go and start writing things and see how it happens. Now you're like, no, no, no, I need to
spend upfront time thinking about this, outlining this. And by the way, we also support this capability. We added this prompt inside spec kid that is called clarified and that is essentially you're using the language model to question your spec right, So if you're not if you have writer's block, you're you're not inspired, Uh, you can just ask the LM to say can you can you ask me quite, are there any blind spots that I might have? Are there the things that I don't know?
I don't know? Right?
Right, just keep keep prodding at this and so and absolutely you're right Richard, like there is a degreeable. So great, Well, we're going to have this massive specification. It's going to be massive, like it's going to be massive context windows for folks that know, like any large language model has basically a limited set of tokens again process at any given time before it starts losing track of what you asked it to do. So the context windows are relatively limited.
So if you start with a giant, massive spec you can call it a context window. I'm going to call it a buffer overflush. Sure that's really what's happening. Absolutely, yes, that that's a very good way of putting it. Like you're going to get into the world of the buffer overflow where a lot of your instructions and guardrails are just going to be tossed out the windows. Like it's not going to be a plot.
Yeah I heard Sun at four point five has more space.
Yes, yes, modern models have like generally are improving in terms of like the the buffer overflail problem.
Yeah.
So what we also do here is not only do we ask you to create the specification, but we'll also break this down into chunks. So once SUSPEC is ready, once the technical plan is outlined, we have the capability to basically split this into consumable tasks. And then this is where I showed in my videos. I showed in a blog where it's like you can use slash tasks to then create a list of tasks that are based on the spec based on the technical plan, and the
LM can do them in chunks. It's like, Okay, first of all, you need to bootstrap this project next to yes, okay, let me go do that. Now you need to create the CSS, Okay, let me go do that. So you're going through these controlled stages of creating things and get
to an end result. Now, some of these tasks also going to be parallelized, and this is something that we see with coding agents like claud code that support sub agents, where the agent itself can spin up sub agents with their own context windows, and you can say, oh, this agent's going to be writing tests for this component, this agent's going to be running tests for this other component. And then you get into this world of kind of things are happening in parallel but also manageable chunks.
Yeah no, and you sort of see your role as a shepherd there to push down the specifications in enough detail that the tools have a chance segregating into portions with headers that describe this is the context you're going to be living in. But it's shorter than the overall context. Now I need you to do this party, and I everywhere I see this being this approach be successful with unbelievable levels of testing too, right, I'm always a stun
to llms. Often when given an instruction for a set of code to generate, get about halfway through and just kind of stop. It's like, you can finish this. It's your buffer overflow. I think it's a buffer overflow. And so so that test approach where I want you to generate the set of tests and then I want you
to pass all the tests before you stop. It's kind of a way to again compress that context further right into these test loops to try and actually get complete sets of code from it, like the tools take the wrestling.
When that happens. When that happens, though, it's it's really unnerving because it's in a state where you can't really debug it because not all the code is there that it was, yes, you know, spitting out and you ultimately have to roll stuff back and try again. And I hate that about code generation in general, is that you know, now this is intelligent code generation. By the way, John Lamb's been into code generation since like ninety one.
Before it was cool.
Yeah, but you know the problem of course is that if it creates something that you don't understand and can't explain in a meeting, for example, you're you're done for in my opinion.
Oh absolutely absolutely.
And I think this is an interesting tangent here to the role of expertise, Like I've heard somebody talk about kind of the role of the developer moving forward. If if LM has become really good at cogeneration and producing just just boatloads of code, what is your role as a developer on IT team? And I think there's a hypoth this is that that role is going to shift
more to almost like a Richards. You go out like the Shepherd reviewer, right, it was like okay, but like even for you to be able to review things, you have to have expertise to know what you're looking at, right,
because I've seen this happen. But like Carl, you're talking about like test or and development, Like to me, this aspect of like, okay, well, there's a bunch of tests, and I looked at some of the tests that some of the models generate, and sometimes like for me to test for the test to pass.
Oh, let me make a change and just return true. Yeah, right, and test is passing now, Hey solved it.
Look at it.
It's all green.
Now.
Nice, But you need to have the expertise to actually look at it and be like, yeah, this ain't it?
No, like I need like I.
Kind of I kind of think of a roll moving forward as sort of like a general contractor building a house. Right, the general contractors in charge of all the subcontractors that have their sub specialties. But any general contractor worth their weight knows enough about those things to be able to take over if the electrician is out sick, or to uh, you know, remove the termite damage from these boards, if the carpenter doesn't you know, isn't there that day? That
kind of stuff. So so you need to be able to understand everything that your subs are doing and be able to jump in when you can, but not necessarily build the house by yourself.
Right, right, And we see this especially critical with things like security and awe, oh my goodness, Like I see so much stuff that is just tossing to get our bripo that clearly has been just like the AI told me that this is secure, Like oh no, you're returning to the two FA code and the adjacent response is you're expecting it like that's that's that's not going to
be good. So yeah, so the these changes right, like there's a good degree of that expertise that needs to be embedded into the process and see that the the what the LM is generating, whether it's tests, the components, the structure is actually right and scope through the project you're building them because LM's go thrills all the time, right all the time, and they do wild things that if you don't know, like on a surface, it might
seem like, oh it works. I was recently like rebuilding some of the stuff would alsope with the help of spec get on my blog and it's like, oh, I couldn't understand where your CSS is. I'm just going to recreate a bunch of CSS files and so I'd have like a bunch of duplication all of a sudden. Yeah it works though, but if I didn't know, if I'm somebody that has to maintain, they'll be like, wait, why just recreate these two folders for this exact same content.
We're coming up with more and more of these examples where having the expertise would prevent working code. That's dumb.
Yeah, yeah, yeah. The concept is what's worked, what's actually working right, and the software clearly has a different perception of working than you. Yeah right, get good enough guidelines. Hey, we got to take a break for these very important messages.
Do you have a complex dot net monolith you'd like to refactor to a micro services architecture? The micro Service Extractor for dot Net tool visualizes your app and helps progressively extract code into micro services. Learn more at aws dot Amazon dot com, slash modernize.
And we're back. It's don A. Rock's Emirateard Campbell. Let's Carl Franklin. You talking to our friend dem about the spec kit and this idea of I think essentially formalizing some practices around harnessing LMS for co generation. You're talking about uml right, yeah, yeah, that's what I want in my life.
You're still way back in the nineties.
Yeah, well, you know, it's linguist. It'd be interesting to get to a point where it was rendering, taking images and breaking them down into specifications as well. But I I do you know, now we've got the I'm starting to see the term work slop, just like AI slop, but it's hey, you you responded to a mediocre corporate email with even with generated results of even more mediocre. And the evil part about this is it takes time to read that and realize it's garbage, and so you're
literally propagating garbage downward and making everything slower. Like there's a real risk here about not creating quality, but there is a way to create quality, like I have seen these things be successful. So part of this is really building you know, we talked about what's our job as the human in the loop here, it's actually having an eye to quality results that just setting it to true
is non as acceptable that these tests are comprehensive. You know, you've got it, and but I also think you're going to be used the tool a lot for this. I like the idea of co generated from Claude being evaluated, you know, by open AI and how does it what its assessment looks like, and going passing back and forth between them so that you do have other assessments of everything being made.
Have you guys ever hired somebody who talked to good talk and then when they sent their code in you could tell they had no idea what they were doing and you're just frustrated. You could lose your mind like that, Like if you're constantly retelling an LLM, No don't you don't downgrade to dot eight? Was dot nine? Did I tell you the down grade?
No?
I did not, So why are you doing? You could actually lose your mind if you know, after a while, if that's your job and no wonder people want to write code because at least they're in control of it and they got no one to blame but themselves.
Yeah, so for that, by the way, like you call out of a very important point, which is, how do you set up these kind of requirements that the LM does not go off the rails in terms of your technical requirements and would spec it introduced this concept of the constitution. It sounds very fancy or like the you know, call it the charter if you will, or the Karda if you're British. You know, basically outline, it's the fundamental guys exactly, like the non negotiable things that will absolutely
apply to your project. And this is where we've seen a lot of successful people coming in and saying I will write my constitution and say you always use.
Dot net nine.
You never downgrade anything else like, And the Constitution is grounded in every part of the spec process so that when it goes through like the technical plan and task breakdown, it always has to go and check like, what does the Constitution say about us?
Oh?
Dot net nine? Oops, I put dot net eight. Okay, can't do that. That's a constitutional violation. I'm gonna go ahead and redo this.
Get up copilot agent. I think the engine was or still is in written in dot net eight, and so it didn't have a dot net nine compiling environment, and so it would always go downgrade and think it was doing you a favor.
Right, So theory that's a long training thatta has a lot of impact on this. That's the long term support version, right, So there's a case but still but still, but you know, the only have this great race of context, which is you know you're describing the Constitution is a prefix prompt, right, It's like before you do anything, these are the rules.
So a bunch of our context is now consumed by the prefix yes and no. Then we have the sort of state of being of the project, and then the request for what to create I'll say, we do it a little bit even trickier than that. So the Constitution is embedded in other prompts where you can essentially say, if you're building a technical plan, consult the Constitution, and within the technical plan, create a checklist of constitutional checks you have to go through before you move forward.
So instead of us embedding the Constitution, the Constitution itself can say like, oh, okay, this has to be a Net nine application, this has to be using this library to connect to Microsoft SQL server. And then when you get to the implementation stage, before you do an implementation, we also do a checklist of essentially saying can you cross check once more the Constitution against the plan, against the task,
against the spec and see if there's any violations. So you're essentially creating almost unit tests for.
English like that.
That's kind of the framing seris Okay, let me, let me go and just cross check to make sure that nothing went off the rails, because too often people fall into this kind of habit of oh, I've done the spec, I've done the planet done and task great, go build this now. But that's like hold on, you still need to check that what it created actually matches the expectation requirements.
So there's a bit of a process, right, And I think this is where I was talking about, Like this is the mental shift that you now have to think about those things that you did not before, because before you would just start writing code and be like, oh sure, yeah, let me bootstrap a dot A nine project and visual studio at my NuGet packages and be on my merryway. Here it's like now I need to basically like spell
it out for it. For like, you have an over eager intern that is very very happy to help you but has no knowledge of what you're trying to do and just go like if you don't tell me, I'll just guess. And this is where you're trying to kind of like put guardrails and say like can I guide you to the right thing, to the exactly what I want?
Reminds me of Scooter from Mondays. Mister Miller, shop it on your pencils, I'll shove you beginning. I didn't find him with pencils up with cranons in shopping to miss the Miller.
It's exactly that. It's exactly that. Uh, Now, I gotta think there's some people listening. Is this even worth it? Then? Like all of this work to try and get this code generation to behave properly.
I think it depends. I think I'll say like it depends right, like it's it's a I I. I'd like to think the analogy like if you know, if you have a hammer, everything looks like a nail. So it's like I don't want to say like you have to use this for everything, but there's certainly value in getting from zero to a new feature, to a new component, to a new entirely new product with this. Even if you use this essentially scaffold this, just just get the bulk of the things, get the four pieces of vail,
and then you with your expertise can come in. It's like you want to go and rewrite this component, go ahead and do this, you want to add like a moon and go ahead to do this. But it saves like a lot of this tediousness. So also a lot of these models are getting better, Like Sonnet four to five got released last week, Like GPT five got released like it was like last month, and like GPT five compared to GPT four was like night and day when it comes to coding, right, which like who saw that coming?
Right? But like they're getting better and better.
And I totally see a world where a lot of these guardrails were just kind of become leaner and it's not going to be as heavyweight because.
You're not going to bang into them as often.
And yeah, exactly because a lot of the constraints that we talked about like they wear. The reason they're there is that they were inspired by Sonnet four being over eager.
Right, Yeah, I know every law is written in blood, right, like right right, what we're seeing.
But as they become better, a lot of these constraints will become more lax because like you can just tell it like it's always dotten at nine is like cool, I remember it's always done at nine, I'm never touching anything else.
Yeah, it's just you don't bang against it as much. Yeah, I just think there's an interesting balancing act for you know, what really you're saying them is there's a case for waiting.
There's a case for waiting and experimenting.
If I wait, the tools will get better.
And experimenting and seeing what works in a wood doesn't then because Spekeett itself is an experiment, right, like we are. We got into the world with the intent of can you help us verify where this works and where it doesn't. Yeah, and like we're not making any statements of saying like, oh, yeah, this is going to absolutely destroy the software engineering career track is the yeah I got to write the code for It's like, no, like I want you to test
this and tell me. Yeah, I've tried adding a feature to my enterprise app and it just completely went off the rails and it was completely useless.
Like that to me is like super helpful. You back, I'd love to know that. No. And I saw this in the early GitHub copilot days where people's behavior changed in the repository, where there was far more reverts yep. Yeah, like they would use the tool to generate some core, they push it up, it would blow up, they would revert. Yeah, And so you know, we I could definitely tell you were using the tool because you were using the toolimate the code and then you weren't really editing much, or
you weren't doing a whole lot. You were just trying. You were stuffing into the test suite. See what happened, and what happened was bl you know what, I'm going.
To close this issue and open it again.
Yeah, you know we we can just make that branch go away again.
And everybody else how we screwed this up.
This was a forcing function for me to actually get much closer to get interesting, because once I started going through like the spectrum processes like okay, let me go create the spec, let me create the plan, let me break it down and task. Okay, this looks reasonable. Let me check the SIN. Okay, so now I have the check. Now let's start generating the code. It's like, okay, I don't even push. The code I just generated was like, okay,
this component, Okay, now it looks right. Checkpoint check the SIN. Now continue generating. Oh now it's screwed up. Just blow it all away. Let's do it again.
The code that worked in the previous build does work this next build. Yeah, exactly.
But the geit process is super helpful in this context because it allows me to checkpoint things, and it's like, all of a sudden, get went from this like, oh yeah, I just use this toss things into gethub into an actual like oh, I can checkpoint things, and I can create multiple branches and multiple implementations across different branches and then test them separately. Oh I'm curious, what if this
button would instead be this kind of component. Let me create a new branch and do this and test this right, So, like you, you go through the process of using get as an.
Actual helper here, Yeah, no kidding, surprised. Can I go to the checkpoint code and point the LM at dot and said, this code works? Why is this changed? Or you're going to make changes? Make sure it passes the same test, so you can use your validation skills against the various pieces of code with these checkpoints and force the tool down about right, let.
Me change GET testing tests?
Do I just change the tests?
This is like see the lesson for future software engineers listening to this learn GET.
Yeah, that's like that's gonna be your your your savior.
GET.
This is a tool that will help you. Yeah, but you know and now you're you're helping me shape my mind on the how different our work looks like and the tools that are actually going to help us to get there. And again with always designed to am I better off? Is as better results? I've definitely talked to folks here, So I'm being successful as a tool, but I'm not having as much fun, right, Yeah, yeah, I can.
I can see this and I think there's a something to be said about the fact that coding and self engineering in and of itself is a creative process, right, Like you're you're sitting down, like, let me think through
this problem, let me figure out how to this. But also there's no denying that there's like, at least for me, I know for a fact, that there's a lot of tedious tasks like oh my goodness, like I just do not want to deal with this, like writing us like okay, you need to write one hundred unit test for all these components, Like oh, like, can I can just somebody write these for me so I can actually focus on the components.
One hundred percent coverage is so much more approachable when you got a tool generating the test solely. Man, Yeah, what'd you call me? So?
Yeah, it's almost like you know these people who get their dopamine rush from just a clean compile, right, you know, you know, I just want to write this feature compiles. All right, it's good, but I get my dopamine rush on those weekly meetings where I show the boss what I've done and it works and everything's good. Yes, that's I'm holding off for the for my endorphins. To kick in at that moment. It's delayed gratification.
I think that's that's there.
There's value in that in the sense that we often can forget what this is in service of, right, Like you're like looking at me, like the stuff that the code that I write is in service I.
Want to solve a specific customer problem. Yeah, this is our whole VB conversation at the of it. Yeah, no, it wasn't as cool as C plus plus, but boy is sure did bring solutions to customers faster. Exactly if this can bring solutions to customers faster, Okay, and how many of your customers did care that, Like, oh you didn't write this in C plus plus ooh, well, as long as it doesn't look like AI slop, right, this
is come down to it. If it's triggering people the way that AI slop triggers people, then you're not succeeding. Just say no to AI slope.
There you go.
Yeah, demand quality from these tools. But I'm also you said this a while ago, and I should have grabbed onto this earlier down if this thing gets me eighty percent of the way by dealing with all the scot work so that I now have to just work on the twenty, which is arguably the coolest code and the most important in the project. You did me a favor,
There's no two ways about that. Yeah. You know, if we could just Prato's law this and get that eighty out so that we can work on the hard stuff, we've definitely saved time provided value.
I think that's the goal. Hard stuff is more fun anyway, Yeah, that's the more fun.
Yeah. Yeah, well it's plus you're going to fight with the spec and the tokens to get those last few points so hard it's probably not worth it. Like there's going to be a point of diminishing returns on this, yeah, at some point. And I'll say, like, it's also the mental shift of you thinking ahead of these problems and having an actual artifact and being more crisp with your thoughts and more crisp with how the rubber dying effect here is huge.
Yes, exactly is going to help you down the line to just create better stuffware, just but just by proxy of you being able to think about it more and understand how does this actually work?
Why is it the way that it is?
What are the things that I should be thinking of that I'm not thinking about You know, we saw this happen in offshoring when when it got easier to offshore to low cost markets and you didn't get good results, and you learned to write better and better specifications and better and better project plans so that you were successful with the offshore developers.
It turned out if you took those things on shore, you got more success to Yeah, shocker, right, Like.
If you're better and specifying your requirements, you get better outputs.
Wow, there is a reality check to this whole thing. But I really appreciate the idea of don't try. You're getting one hundred pcent is probably not worth it that getting And once you get into the eighties, you've had a win and now you can go do the rest. Here's the other thing, you know, because my instinct, I'm going back to code generation responses in the language you've used. Now, I feel like I'm dealing with the code generator, which clearly I am. As soon as I touch that code,
I can't touch the code generator again. But that's not true than l L. No, You're you're collaborating again. You have an intern in your hands. M hmm. You're working together to write the code. Yeah, I'm you're going to resist the anthropomorphic terms there dem like I have a piece of software that's fair, that's fair.
Yeah, but it sooner or later you're going to have to agree that the world wants to anthropomorphize these things.
And I know the world wants it. It's just wrong. It's absolutely fair.
Actually, Like I I can get totally behind that idea, like we should not entermorphize the AI because like, it's just an algorithm, it's a computer background.
But it makes it easier for us to understand it when we put it in human terms, right if when we I.
Think it makes it easier if a story execuse it inappropriately.
Yes, yes, that I think it's like it gives it gives us the way of saying like, oh, it's like it's just it's just like a humans, Like, no, it's not like a human.
It's not at all like a human.
Right, But if I was going to say what was it thinking rather than well, what algorithmic sequences brought.
It to the result that it did? Now true?
Which would you rather let me ask you? Right, No, it's.
True, it's true.
I think there's there's a kind of shades of grade of this it's like where it lands. But I generally feel like, yeah, may're they're they're not humans.
So they're not they're not. We do have to remember that, and so they don't have responsibility. They don't you.
Know, they're not accountable right right, or like if it produces your like right, like we as software engineers, we all know things like the the RAQ twenty five, right, like the incident about the X ray machine. Remind us, So there's an incident about with an X ray machine where because of a software bug and no hardware interlock, it would actually, uh for cancer patients would have basically like deadly doses of radiation in under very certain conditions.
I think this happened like in the eighties. It's litical. I think it's like the RAC twenty five. And so the idea there is like, right, like, if if you have an LM right software that does something dangerous like this, who's accountable for that?
Yeah? Right right? It's not the AI, like you can't it isn't. It isn't the equipment yea, yeah.
It's like, it's not the equipment, it's whoever pushed that software. It's the software developer, just like with any other scenario right, So to me, it's like, I think it's AI. Is that it's it's INTELLISENTI and steroids. Was that Is that a good frame to put it here? Like, yeah, that's that's good.
I mean, because we don't answer promorphize and tell a sense, do we?
You try not to? Well, well, you could, says I mean the number of times I'm cursing a visual studio. What is it thinking?
What were you thinking? Right?
But yeah, so I think it's like long story, longer to what we talked about. I think that's a definitely a mental shift. It's definitely one of those things where you you have to treat it essentially as an assistant program that allows you to write code faster, but it's still up to you to make sure that you you review this and you have input, and you can look and say this is garbage, that's not what I asked, or this test just returns true.
That's not how you pass a.
Test like this are supposed to work, right, So you your expertise is still valuable. And I think that that's what also gets lost in the conversation because folks get so excited.
I'm just I'm trying to de sex you this not out of this down this idea that I have a re entrant code generator. Yeah, that makes me very happy because that's something we haven't able to do before. It used to be when you use code generators. Once you touch that one way, I never run the generator again. Yeah. Now, the idea that I could stick this code generator back at the code that i've also that it contributed to and I modified and do another iteration, that's a big deal.
Like this is it's pretty cool.
Yeah, yeah, exactly because I can come in for a specific component and say, okay, this chunk here doesn't quite look right. And what I will seen people do, and I think this is a super valuable thing, is once you started going through the motions of okay, I saw where it failed. I saw that it did not create
this component the way that I wanted. Based on the conversation that you had in code that back into the spec right and say okay, now that we know this, can you put them back in the spectrum technical plan? So that way, again, if I come in down the line and say, hey, we're going to take on a rewrite of the system, can I recreate the behavior that I had based on the learnings that I had and
the iteration that I had in this new format. And this is where the speck comes in, because then you can say, oh, yeah, totally, I've encoded.
All the larynx. This is also things that we hated doing as developers. Right, It's like, Yo, the spec is wrong, but nobody's actually gonna go fix the spec.
But now oh no, zero people. Now you have a tool that you can demand it fix the spec. Yeah, exactly, Just do yourself a favor and make sure you check it in again. I really appreciate your thinking it will save you because it'll mangle your spec.
Mm hmmmmmmm hmm. Yeah.
I mean, and you're absolutely right in the sense like when I remember, like when I started my career as a product manager at Microsoft, you'd write a spec, you'd review it on a bunch of meetings, and then once a dev the moment the code on the starboard.
Nobody ever touches that over.
It's like and then even if you realize like, oh yeah, we forgot about like mentioning this, Hey dev, can you go fix this thing? Because we had this idea and they're like, oh sure, yeah, let's go change it. Like nobody goes to the doc and then six months later when you look at the doc and be like, product doesn't work this way.
Well, this is how no new people can into the project as they start with the document.
It's wrong exactly, and you and all those documents are wrong and they're all all out of date.
We're trying to avoid that. All right, let's get weirder. Let's start taking after we finished making the code. Then you demand another tool generate a specification from the code you can see and compare against it.
That's actually a thing, you know, and you know what. Where this is super helpful what we refer to as brownfield projects because where a lot of the spectrum of development stuff kind of falls over a lot of scenarios. Is all this is optimized for net new Like I'm starting from zero to one, I have nothing, Go get me something. But what if I already have a code base that is which, let's face it, mostly we do tens of thousands of Yeah, there's like can you do this?
And this is where that reverse process is super helpful. Like I want you to write me a spec based on how my authorization library is working, and it's like, okay, let me go and look at the library that create this, and they're like, Okay, now that we have this context, can we now add a feature that changes how my oft flow works context it's all about content.
Sure, No, this is a whole there's a whole other show here about Brownfield with lllms mm hmm. Just see I you know, because it's a great problem space. Right. Let's say so we have a ton of applications inside of organizations where the original dev team's long gone. Oddly enough, the spec is incorrect, but we need new features. Yeah, and you have a new team that's trying to take that code on. So the idea that you could point in ll at it first to generate a correct specification
in theory, like, you need to validate that. So I probably want to iterate on that a few times and then start to build a plan around how you would make the change you want.
Well, you could certainly build real documentation of your product by just sicken clawed copilot agent or whatever on it and it'll do that. I've done it with Jeff Fritz encoded with AI episode one and it created a pretty good user manual. So I know that's not a spec that's not an internal spec but it certainly is of that same idea that you take something that it already exists and then generate some documentation around it.
Have you guys heard of this project called deep wiki deep wiki, deep wiki, deep wiki that sounds familiar to me.
So has it been around a long time?
No, it hasn't, but it's from the I believe it's some of the same people that wrote Devin, like the Coding Agent. So deep wiki is this place where you can actually come in. It's a documentation generator. Basically, it's an AI based documentation generator. You can come in and you can look at different repositories that already been documented or maybe even add your own, but you can just plug in the URL and then it's going to generate
the docs. And to me, the fascinating part about this is just how freaking good it is at looking at the code base and like, oh vs code. Sure, let me look at the architecture and here's a renderer process, here's the main process, here's the extension host process. How they interact with each other's like none of this stuff is actually like encoded in some like there's a viscode architecture doc but like it infers it for the code, it points you to the lines of code, it generates
mermaid charts, like it's a fascinating project. It's a deepwiki dot com.
Does it use playwright to get screen captures of the application running?
You can plug it in with any MCP servers, including Playwright.
So that's what we did with with Visual Studio code and the agent. We told it to use the Playwright MCP to run the app and actually take screenshots and put it in the documentation, which is very, very helpful.
Yeah.
Yeah, Playwright MCP is one of my favorite tools hands down.
Yeah.
That's unbelievable, is just how good it is about both testing, providing screenshots and actually one of the validation steps that I've experimented for spect driven by the way it's like when it creates the UI, it uses player MCP to go and say, are there any components that overlap with each other or the UI is funky? And then if not, go and fix it.
That's so cool.
Wow.
Right, So you're wiring these things together and we're back to the whole idea of like what's the role to develop in this? And this is like you are now the orchestrator of this fleet of software agents that do things for you? How do you make sure that app?
Yeah? And you see, like I think about the large scale problems inside of big organizations right now. It's like they got a ton of asp down web form apps out there. Nobody wants to work on them anymore. Yeah, of course they Everybody wants a mobile client for a bunch of them, which is almost impossible, and rewriting them
takes time and money. Yeah, And so the idea that I could fire up these llms use stuff like playwright to screenshot the whole app and then fire it through a generator to make it other version of the app. Now me, my twisted mind, what's my automatic reaction? It's like, let's make photocopies of photocopies. So I'm going to take this app, I'm going to generate a spec. Then I'm going to generate an app from the spec. Then I'm going to generate a spec from that version of the app.
I don't see where we get to, because I bet you're going to hit a floor, yeah, of functionality at some point right where, because the compiler always has a say, because the app ultimately has a set of core functionality. Like I wonder if you'd end up with the most distilled version of an app if you did a bunch of iterations like that. Probably probably right.
But also like we know that software there's more to building software than just carbon copy of things. Yes, right, And this is where like I see people posting on social media as like, oh, with the help of LM,
I recreated docuside in three days. It's like, well, sure, pretty sure you didn't like yeah, but like it's you got to realize that there's more docusine than like just the uy of docusine, right, And that's part of it, is like we're really starting to just still into what are the important bits of software and what's the thing that should have our primary attention.
Didn't some guy just recently tell uh and chat gipt or whatever to rebuild and recreate Kubernetes anthropic. It was anthropic, He said, rebuild me Kubernetes in Rust or something like that. And it's spent so many tokens that it costs anthropic four hundred thousand dollars and he only paid his two hundred dollars for the month.
Yeah, but the question is did it did it recreate Kubernetes.
Well, it spent four hundred thousand dollars worth of token.
So it did something maybe nothing, that's in the end. What did that four hundred thousand dollars do but heat up a bunch of rocks? Yeah right, Yeah, the sand is working hard. Yes, made the rocks warm today.
But I was genuinely curious, Like Carl, you were so excited about it, and I was like, but did it actually work? It's like that that that meme about like I rewrote my app in like one day, this massive enterprise scale things, like none of it worked, but did sure look pretty?
Yeah? It was just another version of AI slop. But you know, now you're pressing us the next issue here, which is is this cost effective in the end, Like when we eventually have to pay the real costs because we know we're not so far. I mean we actually have to pay the real cost for the compute, for the tokens and so forth. Like now we're gonna have another layer on running this tool where it's going to now assess the token. Let's do an estimate before we
run this. You know, no different than I do when I start provisioning apps into Azure we understand how much infrastructure we need to run, and I can throw at the CFO it's going to be this much a month. Yeah, you know, to operate this like that. Those are the trade offs are going to make, for sure, and it will get more efficient to a degree that these are going to be the trades, Yeah, for sure.
And I see a world too where we can use them, maybe even a combination of things of what is actually net new stuff that needs to be delegated to a powerful generalized model versus something that can run locally on my machine. Call right, It's like, oh, this is a model that's trained specifically on ASB dot net core. It is excellent for ASP dot net core and nothing else. Can I potentially use that to go and write me the ASP dot net core code?
Sure? Right. I also wonder about training model specific to an application, Like You've got a mature piece of software that's an awful lot of knowledge about what the software does, and so if I can have that run in a local model and just you know, let's not go out of scope here, I just want to add these features to it. So and yeah, the idea that these monster models are the only way to do things sistantly not true, right, right?
And John and I were actually talking about John John Lamb again our good friend, about this concept of a prompt compiler, and the idea here is that with a lot of the contexts that we're passing to models, there's this context overload. There's just too much, like Richard used the concept like the buffer overflows like that, that's like we're trying to prevent. And it's like, and if I'm building an ASP do a net application with a specific like API structure, how do I encode just the relevant
context from the spect it? So I don't just give it like, oh, here's all the front end pieces and everything else that you need to consider. But by the way, just build the apia like, right, can I just select the pieces that it needs for my task?
Yeah? And maybe there is again, like a either a local model or something else that pre emptively can select these things and say okay, you only need this to execute this task and nothing else, and that drives some
of the efficiency. So I think definitely we're we're right now in the space where all of this is like it feels like free money, right, Oh, four hundred thousand dollars of Kubernetes tokens for two hundred dollars a month, Like, yeah, sure, we're in the bubble of you know, the first wave of this stuff right right, This bubble will end, but you know, just no different than the dot com boom and the end of that, you still have an Internet afterwards,
Like there will these tools will still exist, but we'll start to rationalize it. I'm real happy to be talking about the post bubble rationalizations.
Yeah.
Absolutely, yeah, I think this is where the whole conversation about the bubble misses the point that the utility of this is undeniable. Yes, Like I'm looking at the models that we have today, like from Anthropic, from open Ai, from like, and think about it, like if if the evolution of those model stops today, like if after two the refoard of the show nothing else ever gets released. There is still a ton of value behind them and
building suffware and being able to like reduce the toil. Right, nothing changes, it does not improve at all, and there's still a lot of value in this.
Now.
Is there a lot of hype for things that are like chat GBT wrappers around in the wild, like all these like random startups Like absolutely, yeah, But the utility for the core underlying models and the capabilities that they offer for software development was like again to me, is undeniable.
Yeah, I'm with you then, and I'm just you know, we can still get better, but yeah, it's certainly worthwhile, and I appreciate thing you're building, these kinds of tools to help us rein in the sort of randomness and start to think more coherently about what modern dev practices with these cod generators are going to look like going forward.
Absolutely well, Dan, thank you very much. It's been great talking to you. Wow, blowing our minds over here.
Thank you for having me. Yeah, my dream came true. I was in dot net rocks.
That's great.
There you go. And and we went for a ride too, friend, going to call that meaty goodness.
Yet goodness absolutely all right, Thanks again to Den Delamarski, and we'll talk to you next time, dear listener on dot net rocks. Dot net Rocks is brought to you by Franklin's Net and produced by Pop Studios, a full service audio, video and post production facility located physically in New London, Connecticut, and of course in the cloud online at pwop dot com.
Visit our website at d.
O T N E t R O c k S dot com for RSS feeds, downloads, mobile apps, comments, and access to the full archives going back to show number one, recorded September two thousand and two. And make sure you check out our sponsors. They keep us in business. Now, go write some code. See you next time. You got your middle vans. This is home, then my Texes
