WEBVTT

00:00:00.560 --> 00:00:02.560
How does it go? How did it go? Did you

00:00:02.560 --> 00:00:04.319
have a play? Did you do what you said

00:00:04.319 --> 00:00:04.880
you would?

00:00:04.880 --> 00:00:08.400
>> To be honest, I I wanted to I did, but I

00:00:08.400 --> 00:00:11.040
kept on running into issues because the

00:00:11.040 --> 00:00:14.080
project that I had the std spec driven

00:00:14.080 --> 00:00:16.000
development in mind was a mapping

00:00:16.000 --> 00:00:18.320
project which has a ton of dependencies

00:00:18.320 --> 00:00:20.480
in order for it to work with the open

00:00:20.480 --> 00:00:22.080
street map. And I kept on having

00:00:22.080 --> 00:00:23.840
problems with Docker and

00:00:23.840 --> 00:00:25.199
>> yeah because I needed Docker to build

00:00:25.199 --> 00:00:27.199
the sort of dev container with all the

00:00:27.199 --> 00:00:29.920
with all the open street map.

00:00:29.920 --> 00:00:32.800
C++ boost balls. But let's not let's not

00:00:32.800 --> 00:00:35.600
talk about that because

00:00:35.600 --> 00:00:37.120
>> but I think it highlights a very

00:00:37.120 --> 00:00:40.320
important thing, right? Um you you

00:00:40.320 --> 00:00:42.000
speced it out. You had the user stories

00:00:42.000 --> 00:00:43.680
but you got stuck on technical problems

00:00:43.680 --> 00:00:44.399
like the

00:00:44.399 --> 00:00:45.920
>> No, I didn't even I to be honest I

00:00:45.920 --> 00:00:47.520
didn't even get that far.

00:00:47.520 --> 00:00:50.160
>> Okay, I need to revisit that.

00:00:50.160 --> 00:00:54.719
>> But today I was going to conveniently go

00:00:54.719 --> 00:00:57.039
around that way. I hear this echo.

00:00:57.039 --> 00:00:58.640
>> Let's Hold on. Let me just see if I can

00:00:58.640 --> 00:01:00.559
>> probably my my head too loud or

00:01:00.559 --> 00:01:01.199
something.

00:01:01.199 --> 00:01:02.480
>> Oh, echo cancellation.

00:01:02.480 --> 00:01:04.320
>> You mean you hear yourself? Maybe from

00:01:04.320 --> 00:01:06.159
my can back into the mic.

00:01:06.159 --> 00:01:07.200
>> Maybe it's me.

00:01:07.200 --> 00:01:10.000
>> Yeah, the I mean changing the topic cuz

00:01:10.000 --> 00:01:13.680
the spectrum I mean need to I I just

00:01:13.680 --> 00:01:16.640
I've had a few just abortive attempts to

00:01:16.640 --> 00:01:18.080
spectrum development. I just need to

00:01:18.080 --> 00:01:20.000
give it another try. So have you been

00:01:20.000 --> 00:01:22.320
doing it? What what is your status with

00:01:22.320 --> 00:01:23.920
spectriven development before we move

00:01:23.920 --> 00:01:26.320
on? So I've been working on a rewrite an

00:01:26.320 --> 00:01:28.720
open source version of the back end of

00:01:28.720 --> 00:01:31.040
Spec Ledger. So currently Spec Ledger

00:01:31.040 --> 00:01:34.000
public repo is a Golang CLI and the

00:01:34.000 --> 00:01:37.360
actual web app is a Versel hosted Nex.js

00:01:37.360 --> 00:01:40.960
app with serverside rendering and I am

00:01:40.960 --> 00:01:43.759
not a fan of that. Um I also prefer

00:01:43.759 --> 00:01:46.240
monor repos and I don't mind. I think it

00:01:46.240 --> 00:01:47.600
will be more interesting if the back end

00:01:47.600 --> 00:01:50.399
is open source directly within the CLI

00:01:50.399 --> 00:01:53.759
repository. So, I've been specking out a

00:01:53.759 --> 00:01:56.880
new version of of the spec ledger with

00:01:56.880 --> 00:01:59.280
organization support like multi-tenant

00:01:59.280 --> 00:02:01.840
from the get- go. So, you can organize

00:02:01.840 --> 00:02:03.759
projects per organization and then you

00:02:03.759 --> 00:02:06.000
have your private workflows of if you

00:02:06.000 --> 00:02:07.680
want to do openspec or if you want to do

00:02:07.680 --> 00:02:09.280
specit or if you want to do Google

00:02:09.280 --> 00:02:11.039
conductor

00:02:11.039 --> 00:02:12.800
>> then you would should be able to choose

00:02:12.800 --> 00:02:14.800
internally with like or you can build

00:02:14.800 --> 00:02:16.400
your own version of your of your

00:02:16.400 --> 00:02:18.239
templates. Basically what I want is I

00:02:18.239 --> 00:02:21.360
don't want the prompts the um the

00:02:21.360 --> 00:02:23.120
workflow to be embedded within the

00:02:23.120 --> 00:02:26.319
Golang CLI. I want the Golang CLI to

00:02:26.319 --> 00:02:28.640
like you know you authenticate and you

00:02:28.640 --> 00:02:31.440
pull it from your organization or maybe

00:02:31.440 --> 00:02:32.959
maybe there is the first version is is

00:02:32.959 --> 00:02:35.200
is is available so when you

00:02:35.200 --> 00:02:37.200
>> organization organization why do you say

00:02:37.200 --> 00:02:39.920
organization is that just to set set the

00:02:39.920 --> 00:02:41.599
context or something? Yeah, because I

00:02:41.599 --> 00:02:43.760
believe the main purpose of or the main

00:02:43.760 --> 00:02:45.200
problems that I'm trying to solve is

00:02:45.200 --> 00:02:49.200
stakeholder buyin and sharing access to

00:02:49.200 --> 00:02:51.360
the artifacts that need to be reviewed

00:02:51.360 --> 00:02:54.160
and a review environment. And then the

00:02:54.160 --> 00:02:57.440
second thing I want to solve is keeping

00:02:57.440 --> 00:02:59.440
your specdriven development projects

00:02:59.440 --> 00:03:02.080
aligned in terms of workflows so that

00:03:02.080 --> 00:03:04.480
you can version and pull the workflows.

00:03:04.480 --> 00:03:06.319
And then because specdriven development

00:03:06.319 --> 00:03:08.000
workflows are heavy-handed, you should

00:03:08.000 --> 00:03:10.239
be able to customize your workflows to

00:03:10.239 --> 00:03:12.879
have maybe less steps for your for maybe

00:03:12.879 --> 00:03:15.440
the data team doesn't want to do certain

00:03:15.440 --> 00:03:17.360
steps of it. So you could customize

00:03:17.360 --> 00:03:19.040
basically right now on Reddit I see

00:03:19.040 --> 00:03:21.360
quite a lot of posts about we had the

00:03:21.360 --> 00:03:22.959
problem of distributing skills within

00:03:22.959 --> 00:03:25.040
our organization so we build an internal

00:03:25.040 --> 00:03:27.599
skills registry which I think is already

00:03:27.599 --> 00:03:28.159
hold on

00:03:28.159 --> 00:03:32.080
>> does mpx skills.sh SH support private

00:03:32.080 --> 00:03:35.040
ones I wonder cuz that's the way I I use

00:03:35.040 --> 00:03:36.879
to distribute my own skills.

00:03:36.879 --> 00:03:39.760
>> Yeah, so Versel is very simple the NPX

00:03:39.760 --> 00:03:42.159
skills from Versel. I actually ported

00:03:42.159 --> 00:03:44.080
that TypeScript source code because it's

00:03:44.080 --> 00:03:47.440
open source into Golang specure CLI. So

00:03:47.440 --> 00:03:49.280
um so basically because I I don't want

00:03:49.280 --> 00:03:51.280
you to have to run multiple right beats

00:03:51.280 --> 00:03:54.000
is inside the Golang CLI. the skills is

00:03:54.000 --> 00:03:56.560
inside the Golang CLIs manage. So you

00:03:56.560 --> 00:03:57.360
just download

00:03:57.360 --> 00:04:00.239
>> building your own bundle package of AI

00:04:00.239 --> 00:04:01.200
tooling or something.

00:04:01.200 --> 00:04:02.560
>> Yeah, I mean you could argue that you

00:04:02.560 --> 00:04:04.319
take the best tool for the job. But I I

00:04:04.319 --> 00:04:06.000
think all of this is related like by

00:04:06.000 --> 00:04:08.879
adding the skill search and skill

00:04:08.879 --> 00:04:10.480
install capabilities directly to the

00:04:10.480 --> 00:04:13.439
Golang CLI of the spec ledger. You can

00:04:13.439 --> 00:04:15.680
also trigger it by the agent. So when

00:04:15.680 --> 00:04:17.680
the agent goes down to the plan phase

00:04:17.680 --> 00:04:19.759
and identifies a certain text tech like

00:04:19.759 --> 00:04:21.440
hey you're building a react it then

00:04:21.440 --> 00:04:23.600
actually goes and searches using the SL

00:04:23.600 --> 00:04:26.160
skills any react skills that we can use

00:04:26.160 --> 00:04:28.000
and then it proposes like I found these

00:04:28.000 --> 00:04:30.639
skills and the versel uh registry has

00:04:30.639 --> 00:04:33.440
metadata from snik about vulnerability.

00:04:33.440 --> 00:04:35.759
So the agent does that

00:04:35.759 --> 00:04:37.360
>> so it sounds like every organ

00:04:37.360 --> 00:04:40.880
organization needs to heavily customize

00:04:40.880 --> 00:04:43.360
this spec ledger workflow or how do you

00:04:43.360 --> 00:04:44.160
describe it? Yeah.

00:04:44.160 --> 00:04:46.400
>> Yeah. Because I think skills are like I

00:04:46.400 --> 00:04:48.000
don't know my experience with skills is

00:04:48.000 --> 00:04:49.280
that they have some skills I cannot

00:04:49.280 --> 00:04:50.800
share because they have some hard like

00:04:50.800 --> 00:04:53.280
some information that is private. So yes

00:04:53.280 --> 00:04:56.160
you can use the versel skills dot you

00:04:56.160 --> 00:04:57.840
know skills registry which is actually

00:04:57.840 --> 00:04:59.680
it's interesting because after porting

00:04:59.680 --> 00:05:01.600
it from Typescript over in Golang cloud

00:05:01.600 --> 00:05:03.040
told me a couple of interesting things.

00:05:03.040 --> 00:05:05.040
Apparently the way that skills are

00:05:05.040 --> 00:05:07.360
indexed by that tool is if you use it to

00:05:07.360 --> 00:05:08.479
install a skill.

00:05:08.479 --> 00:05:09.680
>> Yeah. Then it comes up on the

00:05:09.680 --> 00:05:10.240
leaderboard.

00:05:10.240 --> 00:05:11.840
>> And then it comes up on the leaderboard.

00:05:11.840 --> 00:05:14.639
It's through metadata to usage metadata.

00:05:14.639 --> 00:05:17.199
So, so my Golang CLI is also sending

00:05:17.199 --> 00:05:18.960
usage like every time you run the specs

00:05:18.960 --> 00:05:21.360
ledger CLI to install a skill, it's

00:05:21.360 --> 00:05:24.000
sending the same metadata like this

00:05:24.000 --> 00:05:26.320
skill was installed. Yeah. And then the

00:05:26.320 --> 00:05:28.000
second part is the skills live inside

00:05:28.000 --> 00:05:29.199
GitHub, right? There nothing else.

00:05:29.199 --> 00:05:31.199
There's no there's no no other registry.

00:05:31.199 --> 00:05:32.880
It's just simple. A skill is referenced

00:05:32.880 --> 00:05:35.039
by uh a git repository. There's a

00:05:35.039 --> 00:05:37.520
shortcut for the Versel skills which are

00:05:37.520 --> 00:05:38.800
served directly from the registry

00:05:38.800 --> 00:05:41.120
endpoint. So for every or pretty much

00:05:41.120 --> 00:05:44.720
every other skill, the npx skills CLI

00:05:44.720 --> 00:05:46.880
actually does a get clone of the repo

00:05:46.880 --> 00:05:49.360
and and then my Golang CLI is like

00:05:49.360 --> 00:05:51.600
trying to use GitHub API, but then there

00:05:51.600 --> 00:05:53.520
was a bug because it wasn't like getting

00:05:53.520 --> 00:05:55.440
all of the references like we get get

00:05:55.440 --> 00:05:56.240
the main

00:05:56.240 --> 00:05:58.639
>> API is a nice way to get some private

00:05:58.639 --> 00:05:59.600
stuff.

00:05:59.600 --> 00:06:01.360
>> Yeah. And it would be that's my goal

00:06:01.360 --> 00:06:04.080
ultimately. My goal is SL CLI, you know,

00:06:04.080 --> 00:06:06.560
and as part of an organization, you have

00:06:06.560 --> 00:06:08.240
your own skills that you can't make

00:06:08.240 --> 00:06:09.840
public and that you don't want the users

00:06:09.840 --> 00:06:12.560
data to be registered. So, so then you

00:06:12.560 --> 00:06:14.240
you should be able within teams to run

00:06:14.240 --> 00:06:16.880
the SL binary and then uh hide or or

00:06:16.880 --> 00:06:18.639
just have private skills as well on top

00:06:18.639 --> 00:06:20.479
of the Versel registry hosted skills.

00:06:20.479 --> 00:06:21.280
>> Let me just

00:06:21.280 --> 00:06:22.400
>> But the same with agents.

00:06:22.400 --> 00:06:25.039
>> I'm trying to find um how to share

00:06:25.039 --> 00:06:26.639
something. Where's the chat? There's

00:06:26.639 --> 00:06:28.080
chat here somewhere. Oh, yeah, it's on

00:06:28.080 --> 00:06:30.319
the right on the side. So this this this

00:06:30.319 --> 00:06:32.479
rewrite of spec ledger is really a big

00:06:32.479 --> 00:06:34.080
like a thing that I wanted because the

00:06:34.080 --> 00:06:36.000
way I envisioned it, it always had like

00:06:36.000 --> 00:06:37.520
the ability to create your own workflow

00:06:37.520 --> 00:06:38.880
within your organization and share those

00:06:38.880 --> 00:06:40.639
across repositories and that was never

00:06:40.639 --> 00:06:41.840
possible because of the way it was

00:06:41.840 --> 00:06:43.600
implemented. So I'm really excited about

00:06:43.600 --> 00:06:47.039
this rewrite but um I haven't been able

00:06:47.039 --> 00:06:50.240
to actually you know complete it.

00:06:50.240 --> 00:06:52.319
>> You can see what I'm writing here.

00:06:52.319 --> 00:06:53.840
>> Yeah, it's a big box with spec ledger.

00:06:53.840 --> 00:06:55.280
Maybe you want to zoom in because when I

00:06:55.280 --> 00:06:57.759
watch these um recordings on YouTube the

00:06:57.759 --> 00:06:59.520
it's always super small. I usually watch

00:06:59.520 --> 00:07:00.160
from mobile.

00:07:00.160 --> 00:07:03.759
>> Okay. So, um I I love how like in the

00:07:03.759 --> 00:07:06.080
last one I'm we we called this this

00:07:06.080 --> 00:07:07.840
whole thing

00:07:07.840 --> 00:07:11.360
um you know this whole STD thing a

00:07:11.360 --> 00:07:13.759
planning tool uh you know driving

00:07:13.759 --> 00:07:16.960
alignment and now this thing like you're

00:07:16.960 --> 00:07:21.120
doing a package a bundle of of necessary

00:07:21.120 --> 00:07:24.479
AI tooling or something is the way

00:07:24.479 --> 00:07:26.639
thinking I'm processing what you just

00:07:26.639 --> 00:07:29.919
said to me. Uh yeah it's more like um

00:07:29.919 --> 00:07:32.080
boilerplate management. So if you want

00:07:32.080 --> 00:07:34.800
to bootstrap a repository for a certain

00:07:34.800 --> 00:07:37.440
type of development it will you know

00:07:37.440 --> 00:07:40.479
with SL init you will get the full spec

00:07:40.479 --> 00:07:42.240
like spec kit workflow which is the same

00:07:42.240 --> 00:07:43.599
spec ledger workflow

00:07:43.599 --> 00:07:45.440
>> and [snorts] then every prompt is

00:07:45.440 --> 00:07:47.599
telling the agent to hey if you run the

00:07:47.599 --> 00:07:51.120
SL binary you can find open comments

00:07:51.120 --> 00:07:52.880
that people has left on on these

00:07:52.880 --> 00:07:56.240
documents. you can find um issues that

00:07:56.240 --> 00:07:57.840
have been created and and task

00:07:57.840 --> 00:07:59.680
dependency graph and what is open what

00:07:59.680 --> 00:08:01.360
is available what's the definition of

00:08:01.360 --> 00:08:03.039
done has this been completed

00:08:03.039 --> 00:08:05.520
>> oh so do what are you using for like a

00:08:05.520 --> 00:08:06.560
beads visualizer

00:08:06.560 --> 00:08:09.280
>> no visual I yes sorry so when you push

00:08:09.280 --> 00:08:11.280
git there's a web hook that parses the

00:08:11.280 --> 00:08:12.800
JSNL

00:08:12.800 --> 00:08:15.120
>> uh and then visualizes into a conbon

00:08:15.120 --> 00:08:18.080
view and um a tree view in in the web

00:08:18.080 --> 00:08:19.039
app so

00:08:19.039 --> 00:08:21.120
>> Oh so so that's part of your your web

00:08:21.120 --> 00:08:21.440
app

00:08:21.440 --> 00:08:23.440
>> yeah that's the back end so the back can

00:08:23.440 --> 00:08:26.319
is the web app is is really so I I did

00:08:26.319 --> 00:08:29.039
um a little like brain

00:08:29.039 --> 00:08:31.840
storm with um I think it was with CHPT

00:08:31.840 --> 00:08:35.599
to identify if um Spec Ledger should

00:08:35.599 --> 00:08:40.080
really be a plug-in for backstage or a

00:08:40.080 --> 00:08:41.760
collection of plugins for backstage

00:08:41.760 --> 00:08:44.399
because I felt like backstage has is an

00:08:44.399 --> 00:08:46.000
internal developer platform that gives

00:08:46.000 --> 00:08:48.240
you a single pane to discover you know.

00:08:48.240 --> 00:08:51.279
>> Yeah, I'm not I'm not fan. Yes, I know a

00:08:51.279 --> 00:08:52.720
lot of people hate backstage because of

00:08:52.720 --> 00:08:54.640
past experience because it was hard to

00:08:54.640 --> 00:08:56.160
customize because it required you to

00:08:56.160 --> 00:08:58.000
write TypeScript plugins. I think a lot

00:08:58.000 --> 00:08:59.760
of those arguments and I'm very excited

00:08:59.760 --> 00:09:02.720
to challenge that opinion of me are gone

00:09:02.720 --> 00:09:05.760
with AI because now asking and also

00:09:05.760 --> 00:09:07.600
backstage has repositioned itself more

00:09:07.600 --> 00:09:10.560
as like a context delivery or like AI

00:09:10.560 --> 00:09:13.200
native tool and like remote MCP. So a

00:09:13.200 --> 00:09:14.560
friend told me like I think we discussed

00:09:14.560 --> 00:09:16.720
this last time. He said that having a

00:09:16.720 --> 00:09:18.640
remote MCP server unlike having all

00:09:18.640 --> 00:09:20.399
these skills inside repositories and

00:09:20.399 --> 00:09:22.080
distributed across machines is much

00:09:22.080 --> 00:09:24.320
harder to keep aligned than having a

00:09:24.320 --> 00:09:26.959
remote MCP. And a remote MCP is always

00:09:26.959 --> 00:09:28.240
up to date to the version that's

00:09:28.240 --> 00:09:30.880
deployed for everyone. So that made me

00:09:30.880 --> 00:09:33.920
think like actually um having this like

00:09:33.920 --> 00:09:36.399
this IDP as a context provider.

00:09:36.399 --> 00:09:38.000
Therefore specledger should really just

00:09:38.000 --> 00:09:41.200
be like a small AI workflow plugin to

00:09:41.200 --> 00:09:42.959
it. But at the same time, I don't want

00:09:42.959 --> 00:09:46.320
Spec Ledger to pre-require um uh

00:09:46.320 --> 00:09:47.760
backstage obviously because a lot of

00:09:47.760 --> 00:09:49.120
people don't want to run it. So that's

00:09:49.120 --> 00:09:50.800
why I was like, is there a way for me to

00:09:50.800 --> 00:09:53.120
build specger as a bunch of plugins and

00:09:53.120 --> 00:09:57.600
then mock the whole of backstage as just

00:09:57.600 --> 00:09:59.040
um you know, if you don't want

00:09:59.040 --> 00:10:01.040
backstage, you can just have like um a

00:10:01.040 --> 00:10:03.200
virtual one that just runs spec ledger

00:10:03.200 --> 00:10:06.000
only. Um but it looked like it's really

00:10:06.000 --> 00:10:07.760
not a good idea to do that. But it also

00:10:07.760 --> 00:10:09.519
surfaced very interesting stuff. So,

00:10:09.519 --> 00:10:12.240
backstage does have some document

00:10:12.240 --> 00:10:14.880
plug-in that basically uses MK docs to

00:10:14.880 --> 00:10:18.160
visualize the um the data and and I I

00:10:18.160 --> 00:10:20.079
was basically telling TGPD I feel like

00:10:20.079 --> 00:10:23.760
specledger is just um a like markdown

00:10:23.760 --> 00:10:25.760
render like a web app that renders

00:10:25.760 --> 00:10:28.000
markdown out of a git repository, right?

00:10:28.000 --> 00:10:30.160
But it's not really um because Specled

00:10:30.160 --> 00:10:31.760
Ledger gives you metadata about the

00:10:31.760 --> 00:10:34.079
ability to to leave comments. It also

00:10:34.079 --> 00:10:36.000
visualizes specifically the workflow

00:10:36.000 --> 00:10:37.760
because that's a common problem with

00:10:37.760 --> 00:10:39.360
specd driven development is like I've

00:10:39.360 --> 00:10:40.640
done this what's the next step I

00:10:40.640 --> 00:10:42.399
remember our early discussions every

00:10:42.399 --> 00:10:44.240
single time was like what's the next

00:10:44.240 --> 00:10:46.399
step so so spec ledger visualizes that

00:10:46.399 --> 00:10:49.920
process so it's it's a very customized

00:10:49.920 --> 00:10:52.320
um for the spec spec development

00:10:52.320 --> 00:10:53.839
>> and then how does GitHub fit in with

00:10:53.839 --> 00:10:54.880
this

00:10:54.880 --> 00:10:56.000
>> GitHub right

00:10:56.000 --> 00:10:59.360
>> is git is the source of truth right but

00:10:59.360 --> 00:11:01.440
you're assuming GitHub is there and

00:11:01.440 --> 00:11:04.320
going to be running like your CI/CD and

00:11:04.320 --> 00:11:06.079
the rest of it, right? I mean, just to

00:11:06.079 --> 00:11:07.920
build a complete picture here,

00:11:07.920 --> 00:11:10.320
>> um, I mean, Git is a source of truth.

00:11:10.320 --> 00:11:12.000
Specled Ledger just generates documents

00:11:12.000 --> 00:11:14.800
that are version controlled in git and

00:11:14.800 --> 00:11:17.680
the spec spec web app is currently only

00:11:17.680 --> 00:11:20.320
built for GitHub web hooks, but it could

00:11:20.320 --> 00:11:22.720
support any git version control system.

00:11:22.720 --> 00:11:24.959
Uh, and just visualizes the contents of

00:11:24.959 --> 00:11:26.959
your git repository also across

00:11:26.959 --> 00:11:29.360
repositories, right? um as an

00:11:29.360 --> 00:11:31.279
organization then you should be able to

00:11:31.279 --> 00:11:32.800
like one one other feature that specled

00:11:32.800 --> 00:11:35.680
ledger I feel must have is the ability

00:11:35.680 --> 00:11:39.040
to search like is there any like have we

00:11:39.040 --> 00:11:40.959
if this uses story somewhere is there

00:11:40.959 --> 00:11:42.959
like like you know to index and find and

00:11:42.959 --> 00:11:44.640
source like what what you get cuz

00:11:44.640 --> 00:11:46.000
basically it's kind of like a knowledge

00:11:46.000 --> 00:11:48.079
base like what do you need if you if

00:11:48.079 --> 00:11:50.800
you've replaced confluence with kit you

00:11:50.800 --> 00:11:52.720
need still the ability to see the

00:11:52.720 --> 00:11:54.720
documents in a nice uh printable view

00:11:54.720 --> 00:11:57.519
mobile so it's possible to you know have

00:11:57.519 --> 00:12:00.160
a mobile version to to easily review and

00:12:00.160 --> 00:12:02.160
look at documents. Um that's really bad

00:12:02.160 --> 00:12:03.600
on the GitHub interface because that's

00:12:03.600 --> 00:12:05.839
not what it it's written for, right? And

00:12:05.839 --> 00:12:07.519
uh the search functionality, right, with

00:12:07.519 --> 00:12:09.120
Confluence, you can very easily go and

00:12:09.120 --> 00:12:11.600
find related documents and things like

00:12:11.600 --> 00:12:14.399
that as a KB. I mean, in the end, it's a

00:12:14.399 --> 00:12:17.120
bit like Obsidian then, right?

00:12:17.120 --> 00:12:18.639
Creating my gosh, I'm really messing

00:12:18.639 --> 00:12:21.680
this up. Okay, so I think I I I

00:12:21.680 --> 00:12:23.440
understand where you're going here. I I

00:12:23.440 --> 00:12:26.880
think all this tooling

00:12:26.880 --> 00:12:31.920
um has its place and I think it's kind

00:12:31.920 --> 00:12:34.000
of interesting. But I just I wanted to

00:12:34.000 --> 00:12:37.279
just contrast this with with my reality.

00:12:37.279 --> 00:12:40.880
And my reality is like

00:12:40.880 --> 00:12:42.399
um

00:12:42.399 --> 00:12:45.519
I'm usually like in a in a in a team. Oh

00:12:45.519 --> 00:12:47.279
my god, what happened to my you know I'm

00:12:47.279 --> 00:12:49.839
usually in a team. I mean this is great

00:12:49.839 --> 00:12:52.560
for for alignment, right? But I'm I'm in

00:12:52.560 --> 00:12:54.320
a team with like a couple of other

00:12:54.320 --> 00:12:58.480
people. We're all generally using um but

00:12:58.480 --> 00:13:00.160
that's you know something like claw code

00:13:00.160 --> 00:13:01.279
or Codex or whatever

00:13:01.279 --> 00:13:02.079
>> or open code

00:13:02.079 --> 00:13:04.320
>> or even open code. Yeah. Well, we all

00:13:04.320 --> 00:13:06.160
Okay, let's let's see if I can draw a

00:13:06.160 --> 00:13:07.279
picture that's a bit more

00:13:07.279 --> 00:13:08.000
representative.

00:13:08.000 --> 00:13:09.839
>> There's a massive CDK terrain release

00:13:09.839 --> 00:13:11.519
coming by the way. Lots of fixes.

00:13:11.519 --> 00:13:13.600
>> Nice. like we we all have like a our

00:13:13.600 --> 00:13:18.480
individual uh uh

00:13:18.480 --> 00:13:21.600
sessions whatever and um and we all I

00:13:21.600 --> 00:13:23.200
don't know working on different sort of

00:13:23.200 --> 00:13:26.160
things

00:13:26.160 --> 00:13:29.360
I I guess I guess in reality this in a

00:13:29.360 --> 00:13:31.519
proper software project this turns out

00:13:31.519 --> 00:13:33.600
to be uh PRs I suppose

00:13:33.600 --> 00:13:35.920
>> yeah which is also I mean I mean as

00:13:35.920 --> 00:13:37.680
you're drawing arrows which is also a

00:13:37.680 --> 00:13:40.079
feature that specledger built which is a

00:13:40.079 --> 00:13:43.760
a session like um indexing engine,

00:13:43.760 --> 00:13:45.920
right? Every every time you do a commit

00:13:45.920 --> 00:13:49.040
spec ledger CLI is um triggered as a

00:13:49.040 --> 00:13:50.480
hook. And to be honest, right now that's

00:13:50.480 --> 00:13:51.839
not very configurable. It's a bit like

00:13:51.839 --> 00:13:53.600
beats. It's it's like a virus and it

00:13:53.600 --> 00:13:55.440
stalls themselves. But basically, when

00:13:55.440 --> 00:13:57.760
it detects a get commit, it will capture

00:13:57.760 --> 00:14:01.600
the human um conversation of what led to

00:14:01.600 --> 00:14:04.079
that commit inside. Yeah, it does.

00:14:04.079 --> 00:14:06.399
>> Okay, this is what I was looking for. A

00:14:06.399 --> 00:14:07.839
a get commit.

00:14:07.839 --> 00:14:09.600
>> That's how it has been implemented. I

00:14:09.600 --> 00:14:11.199
don't know like I let somebody else

00:14:11.199 --> 00:14:12.800
decide what's the best integration

00:14:12.800 --> 00:14:13.519
pattern.

00:14:13.519 --> 00:14:16.079
>> So it grabs the the transcript or

00:14:16.079 --> 00:14:18.560
>> it grabs the delta. So every like every

00:14:18.560 --> 00:14:22.240
time um it does it uses like a

00:14:22.240 --> 00:14:25.199
sophisticated regular expression

00:14:25.199 --> 00:14:29.519
uh and it it identifies um which context

00:14:29.519 --> 00:14:31.360
that you're on like for example are we

00:14:31.360 --> 00:14:33.360
working on this spec or that spec which

00:14:33.360 --> 00:14:36.240
branch is he on um and so on. And then

00:14:36.240 --> 00:14:38.880
it will capture all of the conversation

00:14:38.880 --> 00:14:41.760
since the last capture point uh and then

00:14:41.760 --> 00:14:43.519
put it inside superbase. And then the

00:14:43.519 --> 00:14:45.600
idea is then to surface it, right? To be

00:14:45.600 --> 00:14:47.519
able to see this comet was really good

00:14:47.519 --> 00:14:49.680
or this like this whole feature went

00:14:49.680 --> 00:14:51.680
wrong. So every single like ultimately

00:14:51.680 --> 00:14:54.320
all of the messages that led for one

00:14:54.320 --> 00:14:56.480
feature spec are all tagged by the

00:14:56.480 --> 00:14:58.000
feature spec and we can break it down by

00:14:58.000 --> 00:15:00.000
commit to see how did the user come up

00:15:00.000 --> 00:15:03.199
to that commit. Um but that part of

00:15:03.199 --> 00:15:05.360
actually mining the data displaying the

00:15:05.360 --> 00:15:07.839
data is not implemented.

00:15:07.839 --> 00:15:10.160
>> So we do have like data being in in

00:15:10.160 --> 00:15:11.839
superbase. I have never looked at the

00:15:11.839 --> 00:15:13.839
table. Somebody else implemented it. I'm

00:15:13.839 --> 00:15:15.199
not sure if this is the best way like

00:15:15.199 --> 00:15:16.720
one of the approaches we thought was

00:15:16.720 --> 00:15:19.600
like why don't we just you know just

00:15:19.600 --> 00:15:22.480
drop the whole session in inside S3 or

00:15:22.480 --> 00:15:23.920
something like that like obviously with

00:15:23.920 --> 00:15:27.120
the consent. Um yeah, but um yeah,

00:15:27.120 --> 00:15:28.399
that's not really there, but that's

00:15:28.399 --> 00:15:29.440
definitely one of the things that we

00:15:29.440 --> 00:15:30.160
want

00:15:30.160 --> 00:15:31.279
>> that we want to expand on.

00:15:31.279 --> 00:15:32.959
>> All right, cool. Cool. Cuz like I

00:15:32.959 --> 00:15:34.800
there's a few things that that that come

00:15:34.800 --> 00:15:35.120
to mind.

00:15:35.120 --> 00:15:36.560
>> I keep saying the same thing because I

00:15:36.560 --> 00:15:37.680
mean I also keep saying the same thing,

00:15:37.680 --> 00:15:39.519
but you shared Simon Willis like

00:15:39.519 --> 00:15:41.680
visualization of how you capture your

00:15:41.680 --> 00:15:43.600
sessions and put them into an HTML

00:15:43.600 --> 00:15:44.240
format.

00:15:44.240 --> 00:15:46.160
>> Yeah. I'm just revisiting it. I'm just

00:15:46.160 --> 00:15:48.480
revisiting it because there's still some

00:15:48.480 --> 00:15:52.959
questions in my mind like um

00:15:52.959 --> 00:15:57.279
like the PRs like like like guard rails

00:15:57.279 --> 00:16:00.000
here like like like things I think are

00:16:00.000 --> 00:16:02.399
quite sensible to do like like how how

00:16:02.399 --> 00:16:05.199
would you like limit the size of the PR

00:16:05.199 --> 00:16:06.880
because I mean I I mean I'm guilty of

00:16:06.880 --> 00:16:09.279
doing this myself when I'm I'm and I'm

00:16:09.279 --> 00:16:11.040
in a bit of a session with Claude or

00:16:11.040 --> 00:16:14.399
Codex and my PR that I just created is

00:16:14.399 --> 00:16:15.920
huge like wouldn't it make sense?

00:16:15.920 --> 00:16:18.480
>> I mean this is a common problem with AI

00:16:18.480 --> 00:16:20.399
development, right? That that it's very

00:16:20.399 --> 00:16:23.920
hard for humans to review. I I honestly

00:16:23.920 --> 00:16:25.839
think with

00:16:25.839 --> 00:16:28.079
that we have to trust our CI/CD and our

00:16:28.079 --> 00:16:30.000
tests more [laughter] that we cannot

00:16:30.000 --> 00:16:33.440
review the code. Um but I also I have

00:16:33.440 --> 00:16:35.360
two ways of working with with uh with

00:16:35.360 --> 00:16:37.360
the code, right?

00:16:37.360 --> 00:16:39.360
Um

00:16:39.360 --> 00:16:42.880
I have smaller PRs when I tend to use um

00:16:42.880 --> 00:16:45.440
cloud plan mode and I do that when I and

00:16:45.440 --> 00:16:47.360
so no spec driven development when I'm

00:16:47.360 --> 00:16:49.199
working on like an issue that was

00:16:49.199 --> 00:16:52.160
created. So I have two ways two work um

00:16:52.160 --> 00:16:54.000
streams. One is specd driven development

00:16:54.000 --> 00:16:56.480
creates the issue list next issue ready

00:16:56.480 --> 00:16:58.079
you know based on the spec and the user

00:16:58.079 --> 00:16:59.680
stories and everything that we agree the

00:16:59.680 --> 00:17:01.279
humans involvement is the review of the

00:17:01.279 --> 00:17:03.920
user stories and the validation that the

00:17:03.920 --> 00:17:05.679
end to end thing work and the user story

00:17:05.679 --> 00:17:08.160
is is implemented as is exe executable

00:17:08.160 --> 00:17:10.000
specs should be the ideal proof that it

00:17:10.000 --> 00:17:11.520
works we don't care about the code

00:17:11.520 --> 00:17:13.199
>> okay I don't think I've this before but

00:17:13.199 --> 00:17:15.520
that makes a lot of sense the human okay

00:17:15.520 --> 00:17:18.240
let me just let me just pen that before

00:17:18.240 --> 00:17:21.039
I lose it

00:17:21.039 --> 00:17:24.160
the human does the um I'm I send you the

00:17:24.160 --> 00:17:27.600
link in the chat by the way. Um a story

00:17:27.600 --> 00:17:30.160
review. So that comes I I'm not too sure

00:17:30.160 --> 00:17:32.480
what the the whole cycle looks like. And

00:17:32.480 --> 00:17:36.480
then I'm looking for a I don't know an

00:17:36.480 --> 00:17:40.720
AI. The AI does does the um or the agent

00:17:40.720 --> 00:17:43.840
does the the the code review is what

00:17:43.840 --> 00:17:44.960
you're saying, right?

00:17:44.960 --> 00:17:47.120
>> Uh

00:17:47.120 --> 00:17:50.799
code review. I mean awesome. I think

00:17:50.799 --> 00:17:52.240
right now people are going back and

00:17:52.240 --> 00:17:54.240
forth this a lot between because some

00:17:54.240 --> 00:17:55.919
people like I mean back in January a lot

00:17:55.919 --> 00:17:57.360
of people step up and says I'm an

00:17:57.360 --> 00:17:59.440
engineer that have like senior engineer

00:17:59.440 --> 00:18:01.280
lots of experience I don't look at my

00:18:01.280 --> 00:18:03.039
code anymore right lots of people said

00:18:03.039 --> 00:18:05.200
that back in January I think people now

00:18:05.200 --> 00:18:06.880
in May are coming back from that a

00:18:06.880 --> 00:18:08.640
little bit and saying yeah you know we

00:18:08.640 --> 00:18:10.480
did that we we didn't look at our code

00:18:10.480 --> 00:18:12.480
it wasn't really good we found like so

00:18:12.480 --> 00:18:15.760
much duplicated functions so much uh

00:18:15.760 --> 00:18:18.320
>> I don't know like running situations

00:18:18.320 --> 00:18:20.640
>> so you were just telling me I mean sorry

00:18:20.640 --> 00:18:22.720
I was maybe half listening because I was

00:18:22.720 --> 00:18:24.000
trying to

00:18:24.000 --> 00:18:25.679
>> cuz I was telling you that the human's

00:18:25.679 --> 00:18:27.760
involvement is purely and I don't user

00:18:27.760 --> 00:18:29.760
stories yeah on the user stories and

00:18:29.760 --> 00:18:32.400
then validating that like I mean you

00:18:32.400 --> 00:18:33.520
have you should have automated

00:18:33.520 --> 00:18:36.400
validation like we talked and endlessly

00:18:36.400 --> 00:18:39.120
about that um how do you really have

00:18:39.120 --> 00:18:41.200
fully automated tests and the ability to

00:18:41.200 --> 00:18:42.960
bootstrap a full ephemeral environment

00:18:42.960 --> 00:18:44.960
and validate everything works exactly

00:18:44.960 --> 00:18:46.559
the way you expect or how you have

00:18:46.559 --> 00:18:49.200
executable specs uh and then on the

00:18:49.200 --> 00:18:53.280
other ite you have the the code. Um,

00:18:53.280 --> 00:18:55.200
right now people are going crazy, right?

00:18:55.200 --> 00:18:56.960
You have agents reviewing agents. My

00:18:56.960 --> 00:18:58.559
friend was like that's that will never

00:18:58.559 --> 00:19:00.000
work. Agents will always say that they

00:19:00.000 --> 00:19:01.440
are doing the right job. But to be

00:19:01.440 --> 00:19:03.520
honest, you can do adversarial reviews

00:19:03.520 --> 00:19:05.360
and agents can be very critical. You can

00:19:05.360 --> 00:19:08.400
create dedicated skills that focus on

00:19:08.400 --> 00:19:10.720
identifying security issues and so on.

00:19:10.720 --> 00:19:12.480
There's a lot of startups right now with

00:19:12.480 --> 00:19:16.799
huge amount of investment um for

00:19:16.799 --> 00:19:20.240
for um you know for AI review systems,

00:19:20.240 --> 00:19:20.640
right?

00:19:20.640 --> 00:19:23.919
>> Yeah. Yep. So I mean I mean that's the

00:19:23.919 --> 00:19:26.240
next thing I wanted to get on to with

00:19:26.240 --> 00:19:28.240
Okay. So so I'm just I'm still trying to

00:19:28.240 --> 00:19:30.640
imagine this PR. So So you still have a

00:19:30.640 --> 00:19:33.520
huge PR and you just basically rely on

00:19:33.520 --> 00:19:37.520
your your CICD and your your a your

00:19:37.520 --> 00:19:39.840
adversarial agents to review it. But

00:19:39.840 --> 00:19:42.240
like and and then as you said like for

00:19:42.240 --> 00:19:44.480
security you also have a particular

00:19:44.480 --> 00:19:45.919
agent to to

00:19:45.919 --> 00:19:47.679
>> it doesn't all have to be agents right I

00:19:47.679 --> 00:19:50.400
mean right now you have very decent like

00:19:50.400 --> 00:19:52.720
Golang evaluators that say complexity of

00:19:52.720 --> 00:19:54.400
function is too is is too

00:19:54.400 --> 00:19:57.440
>> yeah like go sec and go

00:19:57.440 --> 00:19:59.840
um go lint something whatever

00:19:59.840 --> 00:20:01.760
>> yeah it will say you have three layer

00:20:01.760 --> 00:20:05.360
like you you this is there's a nested if

00:20:05.360 --> 00:20:09.360
branches um this is too complex uh fall

00:20:09.360 --> 00:20:10.640
is not clear.

00:20:10.640 --> 00:20:13.120
>> So there's some deterministic uh things

00:20:13.120 --> 00:20:14.160
you can run over it.

00:20:14.160 --> 00:20:16.880
>> Also test coverage even if you want to

00:20:16.880 --> 00:20:19.600
consider it as a valid metric.

00:20:19.600 --> 00:20:22.960
Um that will say like I don't know I

00:20:22.960 --> 00:20:24.880
really don't like test coverage after

00:20:24.880 --> 00:20:26.880
you know the problems I had with with AI

00:20:26.880 --> 00:20:28.960
because of the amount of refactoring you

00:20:28.960 --> 00:20:30.720
have to do and how I feel tests fail

00:20:30.720 --> 00:20:32.720
when you have to do massive refactoring.

00:20:32.720 --> 00:20:34.880
But maybe it's a it's a skill issue of

00:20:34.880 --> 00:20:38.080
initial planning. I I I I I'm I'm I'm

00:20:38.080 --> 00:20:39.760
not a fan of test coverage. I feel like

00:20:39.760 --> 00:20:41.520
almost ripping that out just because I

00:20:41.520 --> 00:20:42.960
don't want to encourage it because like

00:20:42.960 --> 00:20:46.320
sometimes I think the the Go core team

00:20:46.320 --> 00:20:48.320
they basically

00:20:48.320 --> 00:20:51.360
uh they have very light uh testing in a

00:20:51.360 --> 00:20:53.280
way. Their coverage is not for the full

00:20:53.280 --> 00:20:56.159
Golang source code. They they they test

00:20:56.159 --> 00:20:57.679
where they think it's meaningful to

00:20:57.679 --> 00:20:59.120
test. And I noticed that in my

00:20:59.120 --> 00:21:00.880
personally in my own projects when I get

00:21:00.880 --> 00:21:04.640
AI to do um you know try to get 100%

00:21:04.640 --> 00:21:06.240
coverage like it like completely

00:21:06.240 --> 00:21:08.880
re-engineers my my source code and

00:21:08.880 --> 00:21:11.200
completely uh you know creates these

00:21:11.200 --> 00:21:12.960
interfaces just so that they can

00:21:12.960 --> 00:21:15.039
properly be tested and it m it just

00:21:15.039 --> 00:21:17.440
balloons the source code in my it makes

00:21:17.440 --> 00:21:19.760
the source even simple projects kind of

00:21:19.760 --> 00:21:21.760
difficult in my opinion but I know it's

00:21:21.760 --> 00:21:23.600
probably better engineered but I just

00:21:23.600 --> 00:21:25.360
for a hobby project I just hate it. I

00:21:25.360 --> 00:21:26.960
had an interesting experience very early

00:21:26.960 --> 00:21:29.840
on when I started learning Golang. Um I

00:21:29.840 --> 00:21:31.520
was writing small little projects back

00:21:31.520 --> 00:21:34.880
like 10 years ago and I was trying to

00:21:34.880 --> 00:21:36.799
write go tests and it wasn't going very

00:21:36.799 --> 00:21:38.960
well and I ended up rewriting a lot of

00:21:38.960 --> 00:21:40.720
my like I implemented all the stuff and

00:21:40.720 --> 00:21:42.320
then I was like okay now let me write

00:21:42.320 --> 00:21:43.600
some tests like I haven't done that

00:21:43.600 --> 00:21:46.320
before. Uh I start writing tests and I

00:21:46.320 --> 00:21:47.919
can't test this thing. I can't test that

00:21:47.919 --> 00:21:49.760
thing because you you can't like execute

00:21:49.760 --> 00:21:51.440
it individually. you can't you you need

00:21:51.440 --> 00:21:54.000
to like the function needs to uh you

00:21:54.000 --> 00:21:56.159
know maybe the interface must be what

00:21:56.159 --> 00:21:57.679
you call it inversion of control must be

00:21:57.679 --> 00:22:00.080
injectable must be this type of patterns

00:22:00.080 --> 00:22:02.080
and I I was like wow after I finished

00:22:02.080 --> 00:22:03.919
writing the test I feel my code is so

00:22:03.919 --> 00:22:06.320
much nicer I've like and I go to my

00:22:06.320 --> 00:22:08.000
colleague and I say like well I just

00:22:08.000 --> 00:22:09.520
learned how to write go test it was

00:22:09.520 --> 00:22:11.120
pretty cool I rewrote all of my original

00:22:11.120 --> 00:22:12.799
code and he was like if you have to

00:22:12.799 --> 00:22:15.039
rewrite your original code to write go

00:22:15.039 --> 00:22:16.320
test that's probably not a good thing

00:22:16.320 --> 00:22:19.360
and I was like to be honest I believe

00:22:19.360 --> 00:22:21.039
the original code was really bad and I

00:22:21.039 --> 00:22:22.640
believe rewriting your code to implement

00:22:22.640 --> 00:22:24.159
the tests made it a lot better like

00:22:24.159 --> 00:22:26.320
you're just saying oh it creates I I I

00:22:26.320 --> 00:22:27.760
think the fact that you had trouble

00:22:27.760 --> 00:22:30.320
adding the tests or the AI ask you to

00:22:30.320 --> 00:22:32.640
you know to re interfaces because it was

00:22:32.640 --> 00:22:34.559
all tightly coupled and and not possible

00:22:34.559 --> 00:22:36.799
to test again where do you want to do

00:22:36.799 --> 00:22:38.400
the tests do you want to do unit test

00:22:38.400 --> 00:22:40.480
>> I think on on a on a client project I

00:22:40.480 --> 00:22:41.840
would have done the proper thing it's

00:22:41.840 --> 00:22:46.240
just it's just I find I find it's uh I

00:22:46.240 --> 00:22:48.320
was just trying to make a facicious I

00:22:48.320 --> 00:22:49.840
was trying to make an argument that when

00:22:49.840 --> 00:22:52.960
you go to 100% uh when when you want to

00:22:52.960 --> 00:22:54.880
achieve 100% coverage, weird things

00:22:54.880 --> 00:22:56.240
start to happen in my opinion.

00:22:56.240 --> 00:22:58.320
>> Yeah. No, like every metric once it

00:22:58.320 --> 00:22:59.760
starts to get gamed, you're not getting

00:22:59.760 --> 00:23:01.360
what you want. And I also had a

00:23:01.360 --> 00:23:03.679
colleague like who said my my coverage

00:23:03.679 --> 00:23:05.919
is super high, but that's usually that's

00:23:05.919 --> 00:23:07.600
like you have some organizations where

00:23:07.600 --> 00:23:09.600
you can't have more than X percentage of

00:23:09.600 --> 00:23:12.400
coverage. Can't be more than 70%. If if

00:23:12.400 --> 00:23:14.080
it's more than 70%, you're you're you're

00:23:14.080 --> 00:23:16.400
you're writing your test to technical

00:23:16.400 --> 00:23:18.000
implementation details. So I think

00:23:18.000 --> 00:23:19.600
there's there's some assumptions that I

00:23:19.600 --> 00:23:21.919
think that we need to capture here

00:23:21.919 --> 00:23:24.159
because I I heard a story where there's

00:23:24.159 --> 00:23:25.919
an organization that's using Claude

00:23:25.919 --> 00:23:28.320
everywhere and and in some of some of

00:23:28.320 --> 00:23:30.880
the you know the different teams the

00:23:30.880 --> 00:23:33.600
different skill levels and some people

00:23:33.600 --> 00:23:36.880
are basically producing like

00:23:36.880 --> 00:23:39.440
uh artifacts using claude or codecs

00:23:39.440 --> 00:23:42.480
which maybe don't go through a CI/CD you

00:23:42.480 --> 00:23:44.559
know like like like how do you prevent

00:23:44.559 --> 00:23:47.200
claude from like publishing to a public

00:23:47.200 --> 00:23:48.960
site or something like this these sort

00:23:48.960 --> 00:23:53.120
of things. Um like I feel I feel like we

00:23:53.120 --> 00:23:55.120
this is quite a rosy situation where

00:23:55.120 --> 00:23:56.559
everyone's like

00:23:56.559 --> 00:23:58.320
>> I disagree. I mean if you're telling me

00:23:58.320 --> 00:24:00.000
that the organization doesn't have

00:24:00.000 --> 00:24:03.919
proper uh you know development practices

00:24:03.919 --> 00:24:07.360
and people are like I think the biggest

00:24:07.360 --> 00:24:09.840
issue that people have with AI messing

00:24:09.840 --> 00:24:11.600
up things is that they are not engineers

00:24:11.600 --> 00:24:13.360
and they have never worked in in an

00:24:13.360 --> 00:24:14.960
organization that actually follows

00:24:14.960 --> 00:24:17.360
proper sane engineering practices.

00:24:17.360 --> 00:24:18.320
>> But this this is the

00:24:18.320 --> 00:24:20.240
>> having separate environments not getting

00:24:20.240 --> 00:24:22.400
giving access to production going and

00:24:22.400 --> 00:24:24.400
promoting artifacts and as you increase

00:24:24.400 --> 00:24:26.400
the trust. I mean a lot of these stories

00:24:26.400 --> 00:24:28.880
that I hear about AI is because you're

00:24:28.880 --> 00:24:31.520
not following the most basic DevOps or

00:24:31.520 --> 00:24:33.440
security practices that even the

00:24:33.440 --> 00:24:34.640
smallest startup has.

00:24:34.640 --> 00:24:35.840
>> Well, [clears throat] I mean I could

00:24:35.840 --> 00:24:37.279
come up I can come up with some

00:24:37.279 --> 00:24:40.720
scenarios like for example like for like

00:24:40.720 --> 00:24:43.440
you you in a in a even in a a small or

00:24:43.440 --> 00:24:45.120
larger organization you might have

00:24:45.120 --> 00:24:48.559
people who are like um you know working

00:24:48.559 --> 00:24:50.400
in finance and things like this and then

00:24:50.400 --> 00:24:52.400
they want to come up with some sales

00:24:52.400 --> 00:24:55.039
report. I mean to them this this whole

00:24:55.039 --> 00:24:57.360
engineering stuff is completely foreign

00:24:57.360 --> 00:24:59.039
to them and then they end up

00:24:59.039 --> 00:25:01.120
>> but but it is a problem where where

00:25:01.120 --> 00:25:04.000
you're not like an AI engineer or an AI

00:25:04.000 --> 00:25:06.559
um what what would you say an AI agent

00:25:06.559 --> 00:25:08.559
is basically need to be on boarded onto

00:25:08.559 --> 00:25:11.200
the systems right and the boarding

00:25:11.200 --> 00:25:14.400
practice must um must be solid if you do

00:25:14.400 --> 00:25:16.400
the same with a human you could argue

00:25:16.400 --> 00:25:18.320
that like you tell a human it's going to

00:25:18.320 --> 00:25:19.760
do it's going to make a mistake but you

00:25:19.760 --> 00:25:21.520
tell it not to do it again it's going to

00:25:21.520 --> 00:25:23.200
do it again and AI agent doesn't really

00:25:23.200 --> 00:25:24.640
learn unless you have like this like

00:25:24.640 --> 00:25:26.799
memory system or or so on, but like it's

00:25:26.799 --> 00:25:28.080
still going to keep making the same

00:25:28.080 --> 00:25:29.760
mistakes. I I would accept that as an

00:25:29.760 --> 00:25:32.240
argument, but still it's a problem with

00:25:32.240 --> 00:25:33.840
access. If you're saying like, oh,

00:25:33.840 --> 00:25:36.080
there's a finance guy now gets wants to

00:25:36.080 --> 00:25:38.240
get cloud access because um it's all the

00:25:38.240 --> 00:25:40.720
rage and he believes himself um an

00:25:40.720 --> 00:25:43.120
excellent engineer because AI tells you

00:25:43.120 --> 00:25:44.880
this is so easy and let's do it and then

00:25:44.880 --> 00:25:46.880
it just goes and publishes um a

00:25:46.880 --> 00:25:49.279
financial report which would be private.

00:25:49.279 --> 00:25:51.679
Uh I can agree with you that that that

00:25:51.679 --> 00:25:54.400
happens. Um and and we actually have a

00:25:54.400 --> 00:25:56.480
DevOps day talk about that last year in

00:25:56.480 --> 00:25:59.120
Singapore where if your organization

00:25:59.120 --> 00:26:00.880
doesn't have a proper policy on AI

00:26:00.880 --> 00:26:02.720
adoption already a year ago they were

00:26:02.720 --> 00:26:04.320
saying like well how are you going to

00:26:04.320 --> 00:26:07.360
govern um AI like if if you don't have a

00:26:07.360 --> 00:26:09.200
policy people are going to use their own

00:26:09.200 --> 00:26:10.400
subscription and their own tool.

00:26:10.400 --> 00:26:11.840
>> So for example the finance or the

00:26:11.840 --> 00:26:14.960
nontechnical people in an organization

00:26:14.960 --> 00:26:16.480
let me get this straight. So you're

00:26:16.480 --> 00:26:17.600
saying that you wouldn't give them

00:26:17.600 --> 00:26:20.080
access to to claude on AI tools?

00:26:20.080 --> 00:26:23.120
>> No, no. Like the talk that I refer of uh

00:26:23.120 --> 00:26:25.039
DevOps day Singapore last year

00:26:25.039 --> 00:26:27.039
explicitly said that as an organization

00:26:27.039 --> 00:26:29.200
you have to have an AI policy. You have

00:26:29.200 --> 00:26:32.000
to put in place um the contracts and

00:26:32.000 --> 00:26:33.520
also you have to give them access you

00:26:33.520 --> 00:26:35.360
have to give them a proper way to access

00:26:35.360 --> 00:26:37.520
it. That includes through a company

00:26:37.520 --> 00:26:40.320
subscription um with limitations that

00:26:40.320 --> 00:26:42.480
like will

00:26:42.480 --> 00:26:45.520
um you know first of like guarantee that

00:26:45.520 --> 00:26:46.720
there will be no training on this

00:26:46.720 --> 00:26:48.559
internal data. No internal data will be

00:26:48.559 --> 00:26:50.400
used by the inference provider. So

00:26:50.400 --> 00:26:52.320
that's a proper contract between the

00:26:52.320 --> 00:26:55.360
company and the um and the inference

00:26:55.360 --> 00:26:57.760
provider. and and then other suggestions

00:26:57.760 --> 00:27:00.320
that was in that talk which I'm off the

00:27:00.320 --> 00:27:02.159
top of my head was like to actually have

00:27:02.159 --> 00:27:06.000
a router that looks at the AI usage. Um

00:27:06.000 --> 00:27:08.159
basically everyone is using AI through

00:27:08.159 --> 00:27:11.120
this router and then that gives you a a

00:27:11.120 --> 00:27:13.440
layer of accountability and also ability

00:27:13.440 --> 00:27:14.320
to block things.

00:27:14.320 --> 00:27:16.960
>> So on on that topic how do you how do

00:27:16.960 --> 00:27:19.039
you route all the the AI network

00:27:19.039 --> 00:27:20.880
requests through a router? This is

00:27:20.880 --> 00:27:24.240
something I I I I was meaning to look at

00:27:24.240 --> 00:27:26.000
today. I I

00:27:26.000 --> 00:27:28.080
>> so I can I I could find you that talk

00:27:28.080 --> 00:27:29.679
because he he gives an example. It's a

00:27:29.679 --> 00:27:30.880
year old so obviously a lot have

00:27:30.880 --> 00:27:33.440
changed. Um and also funny I think we

00:27:33.440 --> 00:27:34.960
mentioned this in the previous call as

00:27:34.960 --> 00:27:36.799
well that a lot of these routers are

00:27:36.799 --> 00:27:39.039
actually like stealing um your your

00:27:39.039 --> 00:27:41.360
credentials and like trying like crypto

00:27:41.360 --> 00:27:43.360
wallet stealers and so on. So you have

00:27:43.360 --> 00:27:47.200
to be careful which one you use. But but

00:27:47.200 --> 00:27:49.200
I think another important part of that

00:27:49.200 --> 00:27:52.159
aspect is or another important aspect of

00:27:52.159 --> 00:27:53.679
that is something that's really

00:27:53.679 --> 00:27:55.200
happening a lot right now with agents

00:27:55.200 --> 00:27:57.279
messing up is like agent like you just

00:27:57.279 --> 00:27:59.679
mentioned guard rails right I talk

00:27:59.679 --> 00:28:01.919
frequently with George who works at

00:28:01.919 --> 00:28:03.679
stackpack and they kind of pivoted

00:28:03.679 --> 00:28:05.919
towards more of aentic uh because they

00:28:05.919 --> 00:28:07.919
are focused on devops tasks so they're

00:28:07.919 --> 00:28:10.080
focused specifically on how do we put

00:28:10.080 --> 00:28:13.679
like a harness that catches

00:28:13.679 --> 00:28:16.480
damaging actions and then uh stops them,

00:28:16.480 --> 00:28:18.159
right? I think there was recently an

00:28:18.159 --> 00:28:20.640
announcement from AWS or uh they said

00:28:20.640 --> 00:28:22.640
like hey here we give you a sandbox was

00:28:22.640 --> 00:28:24.559
it I think Verscell announced agent

00:28:24.559 --> 00:28:26.320
sandbox where they say now you give we

00:28:26.320 --> 00:28:28.399
give you a full sandbox and um we

00:28:28.399 --> 00:28:29.840
guarantee that the agent cannot do

00:28:29.840 --> 00:28:31.840
anything anything silly. I'm not sure if

00:28:31.840 --> 00:28:34.240
it was Versel or AWS. There's been a

00:28:34.240 --> 00:28:36.320
whole there has been a few announcements

00:28:36.320 --> 00:28:38.640
like I I thought I was of the opinion

00:28:38.640 --> 00:28:42.080
that AWS Bedrock had had a lot of stuff

00:28:42.080 --> 00:28:44.480
in this regard, but I'm I'm just talking

00:28:44.480 --> 00:28:45.279
up my ass really.

00:28:45.279 --> 00:28:46.399
>> I remember seeing an announcement

00:28:46.399 --> 00:28:49.760
somewhere on on on on um LinkedIn being

00:28:49.760 --> 00:28:52.799
like we we guarantee you that the agent

00:28:52.799 --> 00:28:55.760
cannot do something damaging.

00:28:55.760 --> 00:28:57.600
Like in my previous client, I was I

00:28:57.600 --> 00:28:59.279
think I was whining and bitching about

00:28:59.279 --> 00:29:01.840
it with you, but like it was heavily uh

00:29:01.840 --> 00:29:03.600
limited in the sense that we could only

00:29:03.600 --> 00:29:06.320
use it in co-pilot

00:29:06.320 --> 00:29:08.480
and I guess it was a bit for for

00:29:08.480 --> 00:29:11.840
fortuitous, but we were using uh dev

00:29:11.840 --> 00:29:13.840
containers. So when we were using dev

00:29:13.840 --> 00:29:15.760
containers, we were using co-pilot and

00:29:15.760 --> 00:29:17.679
we're using AI and dev containers and

00:29:17.679 --> 00:29:19.919
everything was very was sandboxed by

00:29:19.919 --> 00:29:23.120
default like without us even thinking

00:29:23.120 --> 00:29:26.880
about it. Um so

00:29:26.880 --> 00:29:28.960
of course

00:29:28.960 --> 00:29:31.360
of course most people who who using AI

00:29:31.360 --> 00:29:33.520
are not really using it in a sandbox

00:29:33.520 --> 00:29:35.840
right at this point in time. I I know

00:29:35.840 --> 00:29:38.080
maybe clawed code work tried to get

00:29:38.080 --> 00:29:39.760
there

00:29:39.760 --> 00:29:42.399
uh but like most people who who who just

00:29:42.399 --> 00:29:44.720
run clawed code are don't have a proper

00:29:44.720 --> 00:29:46.559
sandbox really especially when they when

00:29:46.559 --> 00:29:48.159
they go you know dangerously skip

00:29:48.159 --> 00:29:49.279
permissions or something.

00:29:49.279 --> 00:29:51.279
>> Yeah I think

00:29:51.279 --> 00:29:53.039
but so Claude Code added a new

00:29:53.039 --> 00:29:55.200
interesting thing which is auto mode.

00:29:55.200 --> 00:29:57.039
Um, so originally when you did a plan,

00:29:57.039 --> 00:29:58.720
you had the option to go auto accept

00:29:58.720 --> 00:30:00.720
edits and then it would still constantly

00:30:00.720 --> 00:30:02.480
ex ask you for permission because I I

00:30:02.480 --> 00:30:04.399
don't use I don't run dangerally skip

00:30:04.399 --> 00:30:06.320
permissions. I am the bottleneck. When

00:30:06.320 --> 00:30:07.520
it asks me a comment, I haven't

00:30:07.520 --> 00:30:09.200
whitelisted. I have to approve it or

00:30:09.200 --> 00:30:11.520
allow listed. Then now it has this allow

00:30:11.520 --> 00:30:13.520
mode which I've been trying to use a

00:30:13.520 --> 00:30:15.440
couple of times and successfully

00:30:15.440 --> 00:30:17.600
sometimes but lately I actually kind of

00:30:17.600 --> 00:30:19.760
avoid it. So auto mode is a separate

00:30:19.760 --> 00:30:22.080
eval agent that like a small little

00:30:22.080 --> 00:30:24.000
model that does a quick eval like is

00:30:24.000 --> 00:30:26.799
this a dangerous activity or not and it

00:30:26.799 --> 00:30:28.480
rejects things because it says things

00:30:28.480 --> 00:30:30.240
yeah but that's kind of like affecting a

00:30:30.240 --> 00:30:32.480
third party system and we should not be

00:30:32.480 --> 00:30:34.080
affecting third party system like it's

00:30:34.080 --> 00:30:37.360
very uh generic type of evaluator. It

00:30:37.360 --> 00:30:38.880
doesn't take into account the context of

00:30:38.880 --> 00:30:40.240
what we're trying to do. It just looks

00:30:40.240 --> 00:30:41.840
at the command and says could this

00:30:41.840 --> 00:30:43.679
potentially have a negative impact? If

00:30:43.679 --> 00:30:45.440
it does it just rejects it interesting

00:30:45.440 --> 00:30:46.880
and then it gives the reason. I thought

00:30:46.880 --> 00:30:48.320
we're going to maybe talk about hooks

00:30:48.320 --> 00:30:50.080
and things like that. Have you have you

00:30:50.080 --> 00:30:51.279
played with clawed hooks?

00:30:51.279 --> 00:30:54.159
>> Yeah. So the the spec ledger CLI is a

00:30:54.159 --> 00:30:57.840
hook that um that that acts whenever a

00:30:57.840 --> 00:30:59.120
command get executed.

00:30:59.120 --> 00:31:00.880
>> Yeah. But like are you talking about

00:31:00.880 --> 00:31:03.200
like a cloud hook or github?

00:31:03.200 --> 00:31:03.840
>> Yeah.

00:31:03.840 --> 00:31:06.080
>> Cloud. So it happens whenever the agent

00:31:06.080 --> 00:31:08.080
triggers a git commit because a lot of

00:31:08.080 --> 00:31:10.960
the prompts and a lot of the work I do

00:31:10.960 --> 00:31:13.200
um now is I I have no problem with the

00:31:13.200 --> 00:31:15.360
agent. Actually, before I never allow

00:31:15.360 --> 00:31:17.279
the agent to commit, but now I always

00:31:17.279 --> 00:31:18.640
ask the agent to commit because it

00:31:18.640 --> 00:31:20.320
writes a really good it stages the file

00:31:20.320 --> 00:31:21.760
correctly. It writes a really good

00:31:21.760 --> 00:31:23.919
commit message that I like to see. So,

00:31:23.919 --> 00:31:25.919
um, so that's why the agent it requires

00:31:25.919 --> 00:31:27.760
you to trust the agent to do the commit.

00:31:27.760 --> 00:31:30.240
So, when that happens, um, it's a bash

00:31:30.240 --> 00:31:31.919
call that that doesn't

00:31:31.919 --> 00:31:35.279
>> your claw hook uh sort of make sure that

00:31:35.279 --> 00:31:37.840
there's a good uh get.

00:31:37.840 --> 00:31:39.200
>> No, no, no. the only thing it does

00:31:39.200 --> 00:31:41.200
because it has to do something real fast

00:31:41.200 --> 00:31:42.960
uh and get out of the way because if the

00:31:42.960 --> 00:31:44.720
hook fails it it really breaks your

00:31:44.720 --> 00:31:46.320
agent's shell. We have experience where

00:31:46.320 --> 00:31:49.279
if CLI breaks for whatever reason and

00:31:49.279 --> 00:31:51.200
then everything the agent tries to do

00:31:51.200 --> 00:31:54.159
because it was a a bash tool hook. So

00:31:54.159 --> 00:31:56.159
every time the bash tool was called to

00:31:56.159 --> 00:31:58.320
do a git command or whatever to identify

00:31:58.320 --> 00:32:00.159
if it was a big git command. It was a

00:32:00.159 --> 00:32:01.919
nightmare. No. suddenly like I would

00:32:01.919 --> 00:32:04.720
download the new spec ledger CLI uh

00:32:04.720 --> 00:32:06.080
release and then I would try to use

00:32:06.080 --> 00:32:07.679
cloud and it would just break like the

00:32:07.679 --> 00:32:09.120
model would just constantly every

00:32:09.120 --> 00:32:10.799
command and it wouldn't tell you why it

00:32:10.799 --> 00:32:12.960
would just be failed failed failed and

00:32:12.960 --> 00:32:14.880
after investigation we figure I figured

00:32:14.880 --> 00:32:16.880
out like oh it's because of the SL

00:32:16.880 --> 00:32:19.919
binary hook is is exiting exit one and

00:32:19.919 --> 00:32:21.279
the hooks are failing and there was no

00:32:21.279 --> 00:32:23.279
information why

00:32:23.279 --> 00:32:24.559
>> that's the one thing I always get

00:32:24.559 --> 00:32:26.559
frustrated with uh all the tooling

00:32:26.559 --> 00:32:29.279
really is that like sometimes something

00:32:29.279 --> 00:32:32.240
hit something went into my global thing

00:32:32.240 --> 00:32:33.919
and then and then and then there's

00:32:33.919 --> 00:32:35.600
something in my project thing and I

00:32:35.600 --> 00:32:37.840
don't know what the precedence is like

00:32:37.840 --> 00:32:40.880
or what what's being used

00:32:40.880 --> 00:32:42.480
>> but that what I really like about that

00:32:42.480 --> 00:32:44.159
is that whenever something like that is

00:32:44.159 --> 00:32:46.320
failing I always ask cloud okay go and

00:32:46.320 --> 00:32:48.159
look what is going on and it goes

00:32:48.159 --> 00:32:49.840
through its local settings it goes

00:32:49.840 --> 00:32:51.440
through the global settings it goes here

00:32:51.440 --> 00:32:52.559
and there and says like these are all

00:32:52.559 --> 00:32:54.159
the things that are currently connected

00:32:54.159 --> 00:32:56.480
that could be impacting this and and

00:32:56.480 --> 00:32:57.919
here it is this is the fix

00:32:57.919 --> 00:32:59.519
>> so the next thing I want to talk about

00:32:59.519 --> 00:33:02.960
is things.json like

00:33:02.960 --> 00:33:05.360
um do you ever touch this file like I I

00:33:05.360 --> 00:33:06.880
know it's probably more of a Claude

00:33:06.880 --> 00:33:08.880
thing but like do you ever because in

00:33:08.880 --> 00:33:13.120
the settings.json you can like uh I

00:33:13.120 --> 00:33:15.360
think Claude also does it in skills in

00:33:15.360 --> 00:33:17.279
other places. Hold on I'll get to skills

00:33:17.279 --> 00:33:18.720
in a bit but like in in the

00:33:18.720 --> 00:33:20.240
settings.json you have your like

00:33:20.240 --> 00:33:22.000
permission sets you can say that like

00:33:22.000 --> 00:33:23.679
>> and also arguments for the model and

00:33:23.679 --> 00:33:25.519
like API endpoints for the model. Yeah,

00:33:25.519 --> 00:33:26.720
there's a bunch of stuff that goes in

00:33:26.720 --> 00:33:28.320
there. Like everything goes in there

00:33:28.320 --> 00:33:33.200
basically. Like would you say it's um it

00:33:33.200 --> 00:33:36.080
makes sense to ship a settings.json in a

00:33:36.080 --> 00:33:39.760
project as to you know maybe disallow

00:33:39.760 --> 00:33:42.399
users from I don't know RM or something

00:33:42.399 --> 00:33:44.240
like that

00:33:44.240 --> 00:33:46.080
RM minus RF. You know what I mean? So,

00:33:46.080 --> 00:33:48.480
so what what specledger uh the Golang

00:33:48.480 --> 00:33:50.960
CLI does is it does have the concept of

00:33:50.960 --> 00:33:53.919
agent config because one of the people

00:33:53.919 --> 00:33:55.519
that was working on the project was

00:33:55.519 --> 00:33:57.279
either using open code or Claude Code

00:33:57.279 --> 00:34:00.080
with quen local or a separate uh

00:34:00.080 --> 00:34:02.480
endpoint. So when he I built a feature

00:34:02.480 --> 00:34:04.559
that launch launches Claude Code and with

00:34:04.559 --> 00:34:06.399
a prepared prompt and then goes straight

00:34:06.399 --> 00:34:08.639
into some activity. So you would run SL

00:34:08.639 --> 00:34:10.480
and then it would bootstrap the repo and

00:34:10.480 --> 00:34:12.159
then would immediately launch Claude Code

00:34:12.159 --> 00:34:14.240
and says um we're bootstrapping the repo

00:34:14.240 --> 00:34:15.679
and it has the prompts and the skills

00:34:15.679 --> 00:34:17.200
and it would just go off and he'd be

00:34:17.200 --> 00:34:18.879
like that really breaks for me because I

00:34:18.879 --> 00:34:21.119
have to set a custom endpoint. I have to

00:34:21.119 --> 00:34:22.399
do all of these additional settings

00:34:22.399 --> 00:34:24.480
configuration when I launch Claude Code

00:34:24.480 --> 00:34:26.159
there's all this like arguments that I

00:34:26.159 --> 00:34:28.240
pass in and so he built a feature on the

00:34:28.240 --> 00:34:30.159
on the CLI that that gives you the

00:34:30.159 --> 00:34:32.480
ability to configure different agents uh

00:34:32.480 --> 00:34:34.800
profiles um like and and so your

00:34:34.800 --> 00:34:36.879
settings.json JSON but but with two

00:34:36.879 --> 00:34:39.440
sections like secrets versus non-secs

00:34:39.440 --> 00:34:41.919
overridable what is collected what you

00:34:41.919 --> 00:34:44.079
would commit into the repo because maybe

00:34:44.079 --> 00:34:46.000
you want some of those settings be get

00:34:46.000 --> 00:34:47.679
included and some of this like local

00:34:47.679 --> 00:34:50.800
that you don't want to include so so

00:34:50.800 --> 00:34:53.440
there is quite a extensive feature spec

00:34:53.440 --> 00:34:55.520
on on how to set up the Claude Code

00:34:55.520 --> 00:34:57.440
settings and so on but to be honest I

00:34:57.440 --> 00:34:59.520
don't use it because I I'm using cloud

00:34:59.520 --> 00:35:02.320
code as is I don't have any like custom

00:35:02.320 --> 00:35:03.920
flags or something so there was only one

00:35:03.920 --> 00:35:05.760
other person using completeness. Yeah, I

00:35:05.760 --> 00:35:09.440
wanted to mention like get um what is it

00:35:09.440 --> 00:35:10.480
called? Git hooks

00:35:10.480 --> 00:35:12.320
>> attribut hooks.

00:35:12.320 --> 00:35:14.160
>> What is have you heard of this new

00:35:14.160 --> 00:35:16.560
project called PR? Hold on. What is pre?

00:35:16.560 --> 00:35:17.760
Oh, pre-commit. Sorry.

00:35:17.760 --> 00:35:19.760
>> Yeah, of course. What do you mean new?

00:35:19.760 --> 00:35:21.280
>> Okay, whatever.

00:35:21.280 --> 00:35:21.760
>> Um

00:35:21.760 --> 00:35:24.880
>> I I've been using Precomit since 2019, I

00:35:24.880 --> 00:35:26.720
think seven years for all of my

00:35:26.720 --> 00:35:28.160
Terraform.

00:35:28.160 --> 00:35:29.280
>> Autofixers are like

00:35:29.280 --> 00:35:31.599
>> Yeah. Yeah. Yeah. But PRE is the new

00:35:31.599 --> 00:35:34.160
Rust one. Whatever. uh

00:35:34.160 --> 00:35:35.359
>> new wish. Okay,

00:35:35.359 --> 00:35:38.320
>> you just given me an idea uh Vincent

00:35:38.320 --> 00:35:40.880
like how about the vibe coding a tool

00:35:40.880 --> 00:35:43.280
like this a tool where you can go like

00:35:43.280 --> 00:35:46.560
um you know

00:35:46.560 --> 00:35:49.200
uh AI show guard rails or something like

00:35:49.200 --> 00:35:51.280
this and it would basically look through

00:35:51.280 --> 00:35:54.240
your your uh your settings your

00:35:54.240 --> 00:35:56.960
pre-commits

00:35:56.960 --> 00:35:59.839
um your your your I don't know your

00:35:59.839 --> 00:36:03.040
switches your flags and basically

00:36:03.040 --> 00:36:05.119
basically you know you know, give a

00:36:05.119 --> 00:36:09.440
score about about your your your

00:36:09.440 --> 00:36:11.280
session, how safe it is, you know what I

00:36:11.280 --> 00:36:13.280
mean? Cuz cuz a lot of people, including

00:36:13.280 --> 00:36:15.040
myself, to be honest, in a personal

00:36:15.040 --> 00:36:18.320
context, I go yolo in my little sandbox.

00:36:18.320 --> 00:36:21.280
But like from an org point of view, you

00:36:21.280 --> 00:36:24.640
you want people um well to to set up to

00:36:24.640 --> 00:36:27.200
to use AI safely. But in the in the case

00:36:27.200 --> 00:36:29.200
that they haven't for one reason or

00:36:29.200 --> 00:36:31.200
another, maybe it would be good to sort

00:36:31.200 --> 00:36:33.680
of gify it to say like, hey, you okay,

00:36:33.680 --> 00:36:36.079
you had a great session with AI, but you

00:36:36.079 --> 00:36:38.880
know what? um you know this could have

00:36:38.880 --> 00:36:40.560
gone wrong that could have gone wrong

00:36:40.560 --> 00:36:44.320
and you know your score is 58%

00:36:44.320 --> 00:36:47.920
you know next time um AI could have done

00:36:47.920 --> 00:36:51.200
this you could have improved and become

00:36:51.200 --> 00:36:54.000
you know 88%

00:36:54.000 --> 00:36:56.960
uh if you um had this guard rail in

00:36:56.960 --> 00:36:58.640
place or something like that you know

00:36:58.640 --> 00:36:59.119
what I mean

00:36:59.119 --> 00:37:01.839
>> yeah I would definitely ask clout or

00:37:01.839 --> 00:37:04.400
chat to do a explore if anything like

00:37:04.400 --> 00:37:07.839
that exists um it Sounds interesting,

00:37:07.839 --> 00:37:09.680
but it also sounds it also sounds like

00:37:09.680 --> 00:37:11.280
something that I would go like that's

00:37:11.280 --> 00:37:13.575
wrong. You don't trust me. I don't care

00:37:13.575 --> 00:37:14.480
[laughter]

00:37:14.480 --> 00:37:16.880
cuz yes. I mean I mean these tools are

00:37:16.880 --> 00:37:18.880
popular and people use them and I think

00:37:18.880 --> 00:37:22.320
they're good for um non-technical user

00:37:22.320 --> 00:37:24.240
but like for me I find them offensive.

00:37:24.240 --> 00:37:25.760
>> I guess for us we would find it

00:37:25.760 --> 00:37:27.440
frustrating and dumb or something like

00:37:27.440 --> 00:37:28.640
that. But I do

00:37:28.640 --> 00:37:30.079
>> Yeah. It would it would say like you

00:37:30.079 --> 00:37:32.079
only have a 50% secure setup and I would

00:37:32.079 --> 00:37:35.839
be like f you. I know what I'm doing. Uh

00:37:35.839 --> 00:37:38.800
but but but um while we were on the

00:37:38.800 --> 00:37:40.160
topic actually earlier about

00:37:40.160 --> 00:37:42.480
settings.json and when I was talking

00:37:42.480 --> 00:37:44.640
about doing I mean I think the AI show

00:37:44.640 --> 00:37:46.720
guard wheels is cool but what I wanted

00:37:46.720 --> 00:37:49.200
to to highlight is something that I I

00:37:49.200 --> 00:37:51.599
learned and I saw a funny meme. So I

00:37:51.599 --> 00:37:52.960
think it was on Reddit and people and

00:37:52.960 --> 00:37:54.800
people are like when you work with AI

00:37:54.800 --> 00:37:58.480
and um you say like commit this then

00:37:58.480 --> 00:38:00.240
cloud goes like here's the commit and

00:38:00.240 --> 00:38:01.839
then it like writes the whole commit

00:38:01.839 --> 00:38:03.680
message and then at the bottom it says

00:38:03.680 --> 00:38:07.520
co-authored by um cloud opus 1M or

00:38:07.520 --> 00:38:09.280
whatever like the model and the context

00:38:09.280 --> 00:38:12.480
and so on. a lot of times because maybe

00:38:12.480 --> 00:38:14.160
it's something that you don't want

00:38:14.160 --> 00:38:16.160
people to see that it was generated with

00:38:16.160 --> 00:38:18.800
AI. you may you know either I I I

00:38:18.800 --> 00:38:20.400
usually I don't give it a permission to

00:38:20.400 --> 00:38:22.160
do the git commit sometimes and I just

00:38:22.160 --> 00:38:23.680
in those projects I don't give it the

00:38:23.680 --> 00:38:26.000
permission and I would go like no I

00:38:26.000 --> 00:38:27.280
would copy the command remove the

00:38:27.280 --> 00:38:28.720
attribution and then run the command

00:38:28.720 --> 00:38:30.079
myself and I would be like I already

00:38:30.079 --> 00:38:31.599
committed it uh I had to fix the

00:38:31.599 --> 00:38:34.720
pre-commit um go continue [laughter]

00:38:34.720 --> 00:38:36.240
I would I would usually because actually

00:38:36.240 --> 00:38:38.079
it's in projects usually

00:38:38.079 --> 00:38:40.720
>> get commit gas amend right

00:38:40.720 --> 00:38:42.960
>> but the very funny thing is and it was a

00:38:42.960 --> 00:38:45.440
funny meme of a picture of of a of a guy

00:38:45.440 --> 00:38:47.119
uh I I forgot the picture. Okay, you got

00:38:47.119 --> 00:38:48.480
to find my picture for for

00:38:48.480 --> 00:38:50.000
>> I got to find it. I might I'm not sure

00:38:50.000 --> 00:38:52.400
if I saved the comment because there was

00:38:52.400 --> 00:38:54.000
a very interesting comment. Apparently,

00:38:54.000 --> 00:38:56.480
you can in the settings of cloud disable

00:38:56.480 --> 00:38:58.640
attribution. So, by default, yeah, by

00:38:58.640 --> 00:39:00.480
default, cloud will add its like

00:39:00.480 --> 00:39:02.079
co-authored by cloud in the commit

00:39:02.079 --> 00:39:03.920
message and also if you create a pull

00:39:03.920 --> 00:39:06.000
request, it will also say generated with

00:39:06.000 --> 00:39:08.480
cloud in the in the pull request. Uh you

00:39:08.480 --> 00:39:10.960
can disable both or one or the other.

00:39:10.960 --> 00:39:12.800
So, so you have all of that uh

00:39:12.800 --> 00:39:14.400
capability. So you can actually and then

00:39:14.400 --> 00:39:16.079
right after I read read that comment on

00:39:16.079 --> 00:39:18.000
on Reddit I went to cloud and I said can

00:39:18.000 --> 00:39:20.079
you disable attribution and it was like

00:39:20.079 --> 00:39:22.160
both PR or commit and I was like both

00:39:22.160 --> 00:39:23.599
and it was like okay done. I was like,

00:39:23.599 --> 00:39:25.359
"Holy shit." You know, so many times

00:39:25.359 --> 00:39:27.359
I've just like told it not to do that

00:39:27.359 --> 00:39:29.520
and then went in and and and and did it

00:39:29.520 --> 00:39:31.040
myself. And the funny thing is when I

00:39:31.040 --> 00:39:32.400
did that and it then shows the whole

00:39:32.400 --> 00:39:34.560
pre-commit like pass pass and then or

00:39:34.560 --> 00:39:36.160
maybe with an autofixer and then I go on

00:39:36.160 --> 00:39:37.520
stage and then do the commit again and

00:39:37.520 --> 00:39:38.800
then I have a reason, right? And I say,

00:39:38.800 --> 00:39:40.480
"Hey, I had to do it myself." And then

00:39:40.480 --> 00:39:42.240
cloud next time it's like here's the git

00:39:42.240 --> 00:39:43.520
command for you to run and I was like,

00:39:43.520 --> 00:39:45.200
"Okay, thank you." So it kind of

00:39:45.200 --> 00:39:46.800
remembers like this guy doesn't want me

00:39:46.800 --> 00:39:48.240
to commit.

00:39:48.240 --> 00:39:50.480
>> But but that's that's kind of a bad

00:39:50.480 --> 00:39:52.480
practice though. I mean we you want to

00:39:52.480 --> 00:39:54.720
show that you used AI, right?

00:39:54.720 --> 00:39:56.800
>> We depend on the project.

00:39:56.800 --> 00:39:59.520
>> For this for this AI show guardrails

00:39:59.520 --> 00:40:00.000
that

00:40:00.000 --> 00:40:01.599
>> I'm going to give you an example that

00:40:01.599 --> 00:40:04.240
somebody told me. Okay. Not me.

00:40:04.240 --> 00:40:06.000
>> It's a friend of a friend. Absolutely

00:40:06.000 --> 00:40:07.040
not me.

00:40:07.040 --> 00:40:08.000
>> Totally not you.

00:40:08.000 --> 00:40:09.359
>> Remember the whole thing I said about

00:40:09.359 --> 00:40:12.560
like AI routers, API uh AI router

00:40:12.560 --> 00:40:14.720
governance contracts in place. You

00:40:14.720 --> 00:40:16.240
cannot use like you even said it. You

00:40:16.240 --> 00:40:18.560
cannot use certain models. If I do a

00:40:18.560 --> 00:40:21.599
commit with Opus 4.71M, but it's not

00:40:21.599 --> 00:40:24.240
available on whatever the the plan that

00:40:24.240 --> 00:40:26.320
that that I'm supposed to use, that's a

00:40:26.320 --> 00:40:28.400
problem, right? I cannot have a commit

00:40:28.400 --> 00:40:31.680
that says Opus 4.71 did this commit.

00:40:31.680 --> 00:40:32.320
>> Yeah.

00:40:32.320 --> 00:40:34.079
>> I mean, not me, right? Somebody told me

00:40:34.079 --> 00:40:34.800
that.

00:40:34.800 --> 00:40:35.920
>> Yeah.

00:40:35.920 --> 00:40:38.240
>> Yeah. I mean, this I'm actually

00:40:38.240 --> 00:40:39.200
>> using the right.

00:40:39.200 --> 00:40:40.800
>> I want I want to write this program

00:40:40.800 --> 00:40:42.640
because I

00:40:42.640 --> 00:40:44.160
>> I know it's going to catch people like

00:40:44.160 --> 00:40:45.280
me.

00:40:45.280 --> 00:40:47.359
>> Catch people like me. catch people like

00:40:47.359 --> 00:40:49.920
you Vincent for example but this this is

00:40:49.920 --> 00:40:51.680
the problem I'm seeing all every day at

00:40:51.680 --> 00:40:54.320
work people are basically

00:40:54.320 --> 00:40:57.520
um maybe maybe token usage there's a lot

00:40:57.520 --> 00:40:58.960
of things that could go in here do you

00:40:58.960 --> 00:41:01.359
think this okay now do you think this

00:41:01.359 --> 00:41:04.400
makes sense to be a spec driven develop

00:41:04.400 --> 00:41:06.800
spec driven develop project yeah I mean

00:41:06.800 --> 00:41:08.480
I think this type of project is

00:41:08.480 --> 00:41:10.800
something I mean you could probably okay

00:41:10.800 --> 00:41:12.560
you could probably vibe code this with

00:41:12.560 --> 00:41:14.400
the going into plan mode and it will

00:41:14.400 --> 00:41:16.000
make a lot of assumptions

00:41:16.000 --> 00:41:17.839
Um, but if you want to have the real

00:41:17.839 --> 00:41:19.440
control of exactly what are the metrics

00:41:19.440 --> 00:41:21.280
that you want to capture, then doing it

00:41:21.280 --> 00:41:22.960
with spec driven development, it might

00:41:22.960 --> 00:41:25.520
actually help you more like spike on the

00:41:25.520 --> 00:41:26.960
different type of guard rails that you

00:41:26.960 --> 00:41:27.440
want to build.

00:41:27.440 --> 00:41:29.680
>> Okay, I'm I I just realized the time I

00:41:29.680 --> 00:41:31.760
need to take my kids to school in 10

00:41:31.760 --> 00:41:34.800
minutes, but okay, I I'm I'm going to

00:41:34.800 --> 00:41:38.480
record myself. I'm I'm gonna mark this

00:41:38.480 --> 00:41:40.880
the the places where I might be a bit

00:41:40.880 --> 00:41:42.960
confused. I'm going to record myself

00:41:42.960 --> 00:41:46.720
developing this in spec with spec uh the

00:41:46.720 --> 00:41:48.640
spectrum development on the specket and

00:41:48.640 --> 00:41:51.040
then and then maybe we can use that as a

00:41:51.040 --> 00:41:53.040
topic for the next pod, right?

00:41:53.040 --> 00:41:55.040
>> Yeah. Um it might be like if you're used

00:41:55.040 --> 00:41:57.040
to plan mode, it will be frustrating but

00:41:57.040 --> 00:41:58.720
it might also be rewarding because you

00:41:58.720 --> 00:42:00.480
might see all the assumptions that the

00:42:00.480 --> 00:42:03.599
AI gives you uh and then decide that yes

00:42:03.599 --> 00:42:05.440
this is a great assumption and actually

00:42:05.440 --> 00:42:07.599
no I want to go more in this direction.

00:42:07.599 --> 00:42:09.760
Um but you will it will definitely be

00:42:09.760 --> 00:42:12.480
frustrating in the token usage. Um you

00:42:12.480 --> 00:42:15.760
will definitely be like I have used 80

00:42:15.760 --> 00:42:18.560
like 30% of my session budget and I have

00:42:18.560 --> 00:42:20.160
not even written a line of code yet and

00:42:20.160 --> 00:42:21.839
I've only got these stupid spec

00:42:21.839 --> 00:42:23.520
documents. That will definitely be the

00:42:23.520 --> 00:42:24.720
first impression.

00:42:24.720 --> 00:42:26.960
>> Yeah, I I I like this. I mean this this

00:42:26.960 --> 00:42:29.200
seems like a

00:42:29.200 --> 00:42:31.280
I can't remember the name. Can can you

00:42:31.280 --> 00:42:33.920
can you dig up that talk from from

00:42:33.920 --> 00:42:35.280
Singapore Dev Days or whatever?

00:42:35.280 --> 00:42:37.680
>> Yeah, DevOps Day Singapore. um which I

00:42:37.680 --> 00:42:38.800
think this year is going to be by the

00:42:38.800 --> 00:42:40.960
end of the year. Um last year it was

00:42:40.960 --> 00:42:42.960
around May. So pretty much

00:42:42.960 --> 00:42:47.119
>> yeah the whole networking uh log VPC oh

00:42:47.119 --> 00:42:50.319
whatever capturing the the the the

00:42:50.319 --> 00:42:52.560
networking of um cuz what the lethal

00:42:52.560 --> 00:42:55.040
trifecta for for AI agents is private

00:42:55.040 --> 00:42:56.880
data access to the internet and

00:42:56.880 --> 00:42:59.119
untrusted content

00:42:59.119 --> 00:43:00.800
uh untrusted content if I remember

00:43:00.800 --> 00:43:02.720
correctly which is and untrusted content

00:43:02.720 --> 00:43:04.640
and internet access is almost the same

00:43:04.640 --> 00:43:07.119
thing. So I'm I'm thinking the network

00:43:07.119 --> 00:43:08.880
angle is something I want to investigate

00:43:08.880 --> 00:43:10.400
further. But in the meantime, I will

00:43:10.400 --> 00:43:12.480
specdriven development some sort of AI

00:43:12.480 --> 00:43:14.640
show guard rails. This is going to be my

00:43:14.640 --> 00:43:17.359
my my next vibe project. How do I I

00:43:17.359 --> 00:43:20.160
don't know how to use a cruel code

00:43:20.160 --> 00:43:21.440
anymore. What are you what are you

00:43:21.440 --> 00:43:22.960
doing? Thanks. Was there some other

00:43:22.960 --> 00:43:25.920
basic DevOps practices to add here that

00:43:25.920 --> 00:43:28.240
come to mind? I'm I'm drawing blanks

00:43:28.240 --> 00:43:30.000
here.

00:43:30.000 --> 00:43:34.960
or have having a a pipeline test gates

00:43:34.960 --> 00:43:37.280
can't hear you. You you muted yourself,

00:43:37.280 --> 00:43:38.000
Vincent.

00:43:38.000 --> 00:43:40.319
>> Ah, so earlier with my amazing jokes,

00:43:40.319 --> 00:43:41.440
you didn't hear any of them.

00:43:41.440 --> 00:43:44.000
>> Yeah, they were that good. Okay, thanks.

00:43:44.000 --> 00:43:45.200
I think that was a I think that was a

00:43:45.200 --> 00:43:47.839
productive session. I'm I'm I'm going to

00:43:47.839 --> 00:43:51.200
do some Spectre and development on a on

00:43:51.200 --> 00:43:53.680
a guardrails

00:43:53.680 --> 00:43:55.440
uh linting tool. Okay,

00:43:55.440 --> 00:43:57.119
>> I want to ramble off one more fun fact.

00:43:57.119 --> 00:43:57.440
Okay,

00:43:57.440 --> 00:44:00.560
>> there's a branch on the bun repository

00:44:00.560 --> 00:44:03.119
of a rewrite into Rust. Reddit and had

00:44:03.119 --> 00:44:04.880
like five or six threats going crazy

00:44:04.880 --> 00:44:06.880
about, oh my god, Antropic, they have so

00:44:06.880 --> 00:44:09.839
much money to have AI rewrite bun from

00:44:09.839 --> 00:44:11.599
Zigg into Rust. Haven't they ever heard

00:44:11.599 --> 00:44:14.640
of Dino? What's wrong with them? Um, and

00:44:14.640 --> 00:44:17.040
X I guess the same type of backlash. And

00:44:17.040 --> 00:44:19.520
the author of the branch came uh in one

00:44:19.520 --> 00:44:21.280
of those threads and said, "You guys are

00:44:21.280 --> 00:44:22.880
blowing this way out of proportion. I

00:44:22.880 --> 00:44:25.920
just want to know what a rust version of

00:44:25.920 --> 00:44:27.520
bun looks like. What's the memory

00:44:27.520 --> 00:44:29.839
profile? How does it act and so on. Uh

00:44:29.839 --> 00:44:31.440
but it's kind of interesting to that we

00:44:31.440 --> 00:44:32.800
are at a day and age that you can just

00:44:32.800 --> 00:44:34.720
go and let me rewrite this massive

00:44:34.720 --> 00:44:37.520
framework from zig into rust just to see

00:44:37.520 --> 00:44:38.800
what's the you know.

00:44:38.800 --> 00:44:39.119
>> Yeah.

00:44:39.119 --> 00:44:40.960
>> Yeah. But that those sort of experiments

00:44:40.960 --> 00:44:42.800
should be private. Why the hell is he

00:44:42.800 --> 00:44:43.760
publishing it for Christ

00:44:43.760 --> 00:44:46.319
>> sake? because um bun is an open source

00:44:46.319 --> 00:44:47.599
project and it's a branch on the

00:44:47.599 --> 00:44:50.640
opensource uh repository rewriting and

00:44:50.640 --> 00:44:52.319
he's doing and and I don't know I think

00:44:52.319 --> 00:44:54.240
I shared with you because he has this

00:44:54.240 --> 00:44:56.720
context document in the branch that says

00:44:56.720 --> 00:44:59.359
like this is how you rewrite um from

00:44:59.359 --> 00:45:01.680
zing

00:45:01.680 --> 00:45:04.400
>> super interesting because um that's one

00:45:04.400 --> 00:45:06.880
of my original AI that was my DevOps day

00:45:06.880 --> 00:45:09.520
talk last year by the way uh using AI to

00:45:09.520 --> 00:45:12.079
rewrite uh something from AWS CDK cloud

00:45:12.079 --> 00:45:15.760
form into CDK for Terraform. So to see

00:45:15.760 --> 00:45:17.599
that how the rules that he he defines

00:45:17.599 --> 00:45:20.720
are very very very cool. Um

00:45:20.720 --> 00:45:24.319
>> Right. Right. Right. Oh on the topic to

00:45:24.319 --> 00:45:26.240
have you just to rattle off a couple of

00:45:26.240 --> 00:45:28.160
things the

00:45:28.160 --> 00:45:30.960
for setting up um

00:45:30.960 --> 00:45:34.160
like a like a fresh AWS

00:45:34.160 --> 00:45:36.000
um

00:45:36.000 --> 00:45:38.640
landing zone like a whole organization,

00:45:38.640 --> 00:45:41.280
right? Would you say the Terraform

00:45:41.280 --> 00:45:44.400
tooling or the CDK uh tooling is about

00:45:44.400 --> 00:45:46.240
the same? It makes no difference like

00:45:46.240 --> 00:45:49.119
using AWS control tower, setting up your

00:45:49.119 --> 00:45:52.319
logging account and your cloud trail

00:45:52.319 --> 00:45:55.200
blah blah blah. Does like which IA

00:45:55.200 --> 00:45:57.599
solution would you go for? I think e

00:45:57.599 --> 00:45:59.680
either or would you say Terraform's

00:45:59.680 --> 00:46:01.359
better? Like especially if you had to

00:46:01.359 --> 00:46:03.920
like you know do do general things like

00:46:03.920 --> 00:46:06.880
uh you know link up with uh with octa

00:46:06.880 --> 00:46:08.319
and things like that. Does it make

00:46:08.319 --> 00:46:10.560
>> I think my my experience is dated when I

00:46:10.560 --> 00:46:13.839
use AWS control tower um I think four

00:46:13.839 --> 00:46:15.599
years ago it missed a lot of the

00:46:15.599 --> 00:46:18.640
features that I wanted. I have a mixed

00:46:18.640 --> 00:46:21.599
where I do like AWS cloud AWS

00:46:21.599 --> 00:46:23.520
organization and cloud formation stack

00:46:23.520 --> 00:46:26.640
set which allow you to target a child or

00:46:26.640 --> 00:46:29.599
member account based on the uh unit like

00:46:29.599 --> 00:46:32.160
organization unit ou. So you can apply a

00:46:32.160 --> 00:46:34.000
stack set basically you can define the

00:46:34.000 --> 00:46:35.599
cloud for stack at the organization

00:46:35.599 --> 00:46:38.000
level and then on these organization

00:46:38.000 --> 00:46:40.000
units automatically deploy them.

00:46:40.000 --> 00:46:41.839
>> Sure you're using cloud for I guess

00:46:41.839 --> 00:46:43.680
>> no bootstrapping. So I said I have a mix

00:46:43.680 --> 00:46:46.640
setup like I use AWS or I don't use

00:46:46.640 --> 00:46:49.359
control tower um because of the landing

00:46:49.359 --> 00:46:51.440
zone uh product was pretty bad

00:46:51.440 --> 00:46:53.680
>> as another project I can't remember.

00:46:53.680 --> 00:46:54.079
Sorry.

00:46:54.079 --> 00:46:56.160
>> What is AWS or?

00:46:56.160 --> 00:46:58.640
>> So AWS or is where you are able to

00:46:58.640 --> 00:47:00.240
manage multiple AWS account

00:47:00.240 --> 00:47:02.400
>> under Yeah. Yeah. Yeah. Sorry. I thought

00:47:02.400 --> 00:47:03.839
you were referring to some sort of

00:47:03.839 --> 00:47:05.040
framework or something. Sorry.

00:47:05.040 --> 00:47:07.280
>> No, no, no. But but that all of those

00:47:07.280 --> 00:47:10.000
services have evolved so much um that I

00:47:10.000 --> 00:47:10.720
think

00:47:10.720 --> 00:47:12.240
>> it's the kind of thing you don't do very

00:47:12.240 --> 00:47:14.880
often. um usually and also that's

00:47:14.880 --> 00:47:17.119
another very like an argument that that

00:47:17.119 --> 00:47:19.119
is very hard for me to argue against

00:47:19.119 --> 00:47:20.800
which is like yeah but we only have five

00:47:20.800 --> 00:47:22.240
accounts and we only on boarding them

00:47:22.240 --> 00:47:25.520
one one every year or one every quarter

00:47:25.520 --> 00:47:27.359
so why do we need to have this all

00:47:27.359 --> 00:47:29.839
automated so my my personal preference

00:47:29.839 --> 00:47:32.240
right now that I have that I use is I

00:47:32.240 --> 00:47:35.119
use stack set to bootstrap the terraform

00:47:35.119 --> 00:47:38.640
because I I don't use tacos uh hosted

00:47:38.640 --> 00:47:41.040
service I use Atlantis and Terraform

00:47:41.040 --> 00:47:43.280
with with my own setup you're using when

00:47:43.280 --> 00:47:44.880
you say stack set you're using like the

00:47:44.880 --> 00:47:47.119
AWS provided stuff I guess right

00:47:47.119 --> 00:47:50.240
>> so stack sets are an AWS orc cloud for

00:47:50.240 --> 00:47:52.560
feature you have to give the I think you

00:47:52.560 --> 00:47:54.480
have to give a service linked account uh

00:47:54.480 --> 00:47:56.800
linked role permission uh you have to

00:47:56.800 --> 00:47:59.359
enable cloud for service to run AC

00:47:59.359 --> 00:48:01.599
across your AWS org so that it can go in

00:48:01.599 --> 00:48:03.599
into different accounts and do things so

00:48:03.599 --> 00:48:05.839
I use that to bootstrap my accounts

00:48:05.839 --> 00:48:08.319
automatically they get bootstrapped with

00:48:08.319 --> 00:48:10.319
uh an IM role that has a trust

00:48:10.319 --> 00:48:12.800
relationship with the AWS account where

00:48:12.800 --> 00:48:15.280
my my Terraform automation lives. So I

00:48:15.280 --> 00:48:16.800
have one which usually is called like

00:48:16.800 --> 00:48:19.280
managed services or shared services

00:48:19.280 --> 00:48:21.760
account or they call it in in AWS CDK

00:48:21.760 --> 00:48:24.079
you have this as well. AWS CDK pipelines

00:48:24.079 --> 00:48:26.720
uses the DevOps account as as a as an

00:48:26.720 --> 00:48:28.079
idea. That's where your pipeline is

00:48:28.079 --> 00:48:29.839
defined and it runs across all of your

00:48:29.839 --> 00:48:31.280
other accounts. So I have the same

00:48:31.280 --> 00:48:33.359
setup. I have one account where where

00:48:33.359 --> 00:48:37.119
the um the pipeline lives and all of the

00:48:37.119 --> 00:48:38.640
other accounts when they're on boarded

00:48:38.640 --> 00:48:40.240
they trust they create a trust

00:48:40.240 --> 00:48:41.839
relationship with that account.

00:48:41.839 --> 00:48:44.480
Have you had any things that like like

00:48:44.480 --> 00:48:46.559
easily bootstrap Atlantis and things

00:48:46.559 --> 00:48:48.000
like that or is that just

00:48:48.000 --> 00:48:50.400
>> Yeah, I do. And I I so part of my terra

00:48:50.400 --> 00:48:52.880
constructs uh project was to basically

00:48:52.880 --> 00:48:55.200
come to the point that I publish a a

00:48:55.200 --> 00:48:58.800
terraform mod terf or a CDK terrain

00:48:58.800 --> 00:49:00.960
construct that just you just run it and

00:49:00.960 --> 00:49:03.839
it just bootstraps your whole um account

00:49:03.839 --> 00:49:06.000
and terraform automation.

00:49:06.000 --> 00:49:07.520
>> That would be cool. I mean like people

00:49:07.520 --> 00:49:09.680
ask me about this and I'm like yeah use

00:49:09.680 --> 00:49:11.839
control tower. How do you do Atlantis?

00:49:11.839 --> 00:49:13.920
Uh do it manually?

00:49:13.920 --> 00:49:16.240
>> I feel Atlantis is lagging behind in a

00:49:16.240 --> 00:49:18.319
lot of features and it's designed in a

00:49:18.319 --> 00:49:20.400
very rigid way. Like it's very hard to

00:49:20.400 --> 00:49:22.720
to make changes like even just making a

00:49:22.720 --> 00:49:24.720
drift detection with the API endpoint is

00:49:24.720 --> 00:49:26.640
kind of really is broken. So I use

00:49:26.640 --> 00:49:28.480
Atlantis but I don't think it's a very

00:49:28.480 --> 00:49:29.839
good solution. I think there might be

00:49:29.839 --> 00:49:31.440
other like I don't know maybe state

00:49:31.440 --> 00:49:33.680
graph if there but there should be more

00:49:33.680 --> 00:49:35.760
like a better automation solution for

00:49:35.760 --> 00:49:36.319
that. But

00:49:36.319 --> 00:49:38.400
>> yeah, agreed. But as you said, like you

00:49:38.400 --> 00:49:40.319
you generally only do this like once.

00:49:40.319 --> 00:49:41.920
How often do you need to do it? Okay,

00:49:41.920 --> 00:49:43.520
cool. Um, I thought that was a

00:49:43.520 --> 00:49:45.920
productive session. I will I will pledge

00:49:45.920 --> 00:49:49.839
to do some some sedd for you to review

00:49:49.839 --> 00:49:52.000
in a bit. Have a great day. See you.

00:49:52.000 --> 00:49:53.520
>> You would have a lot better experience

00:49:53.520 --> 00:49:55.359
if you use spec ledger, but maybe you

00:49:55.359 --> 00:49:57.119
should use specket first to know.

00:49:57.119 --> 00:49:58.960
>> Yeah, I'll use packet first and then

00:49:58.960 --> 00:50:03.839
then we can exchange notes. Okay. See?

