Episode 4: Who is Vincent DE Smet & what is Grid?

Published: Wednesday, Oct 29, 2025 • Duration: 65 minutes • Season 1

Who is Vincent DE Smet & what is Grid?

Download MP3 | Watch on YouTube

00:00 Why move to Vietnam? 33:34 Spec Kit and https://github.com/steveyegge/beads? 44:49 Demo of the Grid

Watch on YouTube

summarize "https://youtu.be/OacVAuGFSHg" --timestamps --slides

Vincent De Smet discusses his professional journey from implementing ERP systems in Vietnam to becoming a specialist in cloud infrastructure and Kubernetes. The conversation covers the evolution of container orchestration, the technical trade-offs between different cloud services, and the development of his new project, Grid. De Smet details how his background in manual system administration led him to seek better automation and type safety in infrastructure as code. He also provides a deep dive into his current development workflow, which leverages AI agents and spec-driven development to build complex software systems.

Slide 1

From ERP Consulting to Infrastructure Automation

Vincent De Smet moved to Vietnam in 2006, initially working for a decade as a professional services consultant. His primary role involved implementing Infor ERP systems for international clients, including major hospitality brands like Hilton Hotels. During this time, he learned that you really only understand something if you if you can explain it to someone else while training users on complex accounting software. His transition toward software engineering and infrastructure began as he sought to automate the repetitive, manual processes of installing Windows systems. He moved from following static Word documents with screenshots to writing extensive PowerShell scripts. These scripts allowed him to interact with the .NET framework, load access databases, and create unattended installation routines. This early exposure to automation and the realization that manual processes were inefficient set the stage for his later interest in immutable infrastructure and containerization.

Slide 2

Gaming Origins and the Rise of Docker

The shift into infrastructure engineering was heavily influenced by De Smet’s interest in gaming. Around 2013, he attempted to run Counter-Strike: Global Offensive servers in Vietnam. He discovered that running game servers in traditional virtual machines led to significant performance degradation. This challenge led him to explore Linux containers and Docker as a more efficient alternative. He began building a gaming platform that required ingesting massive amounts of log data to generate player statistics, similar to professional platforms like ESEA. He utilized IRC bots and regular expressions to parse logs and manage tournament flows. This project forced him to learn modern web technologies, including NodeJS, Python, and Angular. By attending local meetups in Vietnam, he transitioned from the Windows-centric world of ERP to the burgeoning ecosystem of Go, Docker, and immutable server architecture.

Slide 3

The Early Days of Kubernetes and CoreOS

De Smet was an early adopter of Kubernetes, following its announcement by Google in 2014. He initially viewed the system as overkill but was fascinated by the kubelet’s ability to manage containers. He documented the “hard way” of setting up Kubernetes on Digital Ocean droplets, which involved manually bootstrapping PKI, configuring etcd, and setting up Flannel for overlay networking. He highlights the significance of CoreOS during this era, particularly its container-centric operating system and the Fleet scheduler. He describes the technical competition between Docker and CoreOS, noting how CoreOS developed Rocket (rkt) to address security concerns like image signing and verification. This period was marked by rapid innovation and shifting standards, as Kubernetes eventually superseded alternative schedulers like Fleet and Docker Swarm. De Smet notes that while CoreOS was eventually acquired by Red Hat, its influence on the industry remains through projects like ignition and the concept of automated OS updates.

Slide 4

Infrastructure Trade-offs and Resource Management

The discussion explores the practical trade-offs between using Kubernetes and managed services like AWS Fargate. De Smet argues that while Fargate offers simplicity, it lacks the fine-grained control over resource oversubscription that Kubernetes provides. In Kubernetes, engineers can oversubscribe nodes, allowing pods to burst and utilize available memory and CPU beyond their guaranteed limits, which is essential for handling bury workloads cost-effectively. He notes that the reason developers like to run docker compose is because it’s easy almost no dials and knobs but emphasizes that enterprise-scale infrastructure requires more robust controls. He discusses the evolution of ECS and the recent introduction of managed autoscaling groups, highlighting that the choice of tool depends on the specific business value and operational requirements of the organization. This understanding of trade-offs led him to develop Grid, a tool designed to manage infrastructure state with stronger type safety than traditional methods.

Slide 5

AI-Driven Development and Task Management

De Smet provides a detailed look at his current development process, which heavily utilizes AI agents like SpecKit and Beads. He describes a “spec-driven” approach where he uses AI to plan features, perform gap analysis, and generate functional requirements in Markdown. He highlights the challenges of managing massive AI-generated task lists, which can grow to thousands of lines. To solve this, he uses Beads, a tool that tracks tasks in a database rather than a flat file, allowing for better context management and issue linking. He explains how he uses different AI models for specific tasks: Gemini for reviewing code and plans due to its speed and large context window, and Claude for the actual implementation. This workflow allows him to “slice and dice” complex features into manageable issues with clear acceptance criteria. He emphasizes that the planning phase is critical, often taking up the majority of the development time to ensure the AI agent has sufficient context to execute correctly.

Slide 6

The Grid Project and Strongly Typed State

The final segment focuses on “Grid,” De Smet’s project for managing infrastructure state. Grid is designed to solve the problems associated with “integration registries” in large organizations, where different teams need to share infrastructure outputs like VPC IDs or subnet IDs. Unlike existing solutions that rely on loosely typed strings, Grid aims to provide strongly typed schemas for infrastructure outputs using Terra Constructs. This allows for better contract testing between teams and ensures that dependencies are versioned and validated. De Smet demonstrates the Grid API and dashboard, showing how it tracks dependencies between different Terraform states. The system can detect when a dependency becomes “stale” due to changes in an upstream resource. He explains that Grid uses state as an encapsulation mechanism, allowing platform teams to expose specific resources to product teams without revealing the underlying complexity. The project is built using Go and Connect RPC, providing autogenerated clients for multiple languages and a React-based visualization layer.

Model: google/gemini-3-flash-preview

Transcript (auto-generated from YouTube captions)
Why did you move to Vietnam? Just
because you bought a place, I suppose,
just like I moved to
>> No, no. I I I came to Vietnam in 2006
and um I worked 10 years as a
professional services
um consultant implementing ERP systems
like financial management system called
infor systems. And so that was mostly
with international clients. So I was
based out of Vietnam but I would be
traveling all the time. And my
background is software engineering, but
um I spent 10 years training people on
how to enter invoices into an accounting
system without knowing anything about
accounting initially. Um, so that was
like and that's kind of where I learned
that you really only understand
something if you
um if you can explain it to someone else
but also you get a very different
perspective from other people cuz they
put me in front of like manuals of this
accounting system and they said okay in
one month you're going to the customer
you're going to shadow a senior first
and then later you're going to have to
do the trainings on your own.
>> So you're training like Vietnamese?
>> No, no, no. International. So I was
based out of Vietnam, but um the company
I worked for had a very big contract
with Hilton Hotels Worldwide. So I went
mostly to Hilton hotels like Gardening
or
>> Are you allowed to say these people's
names
or do I have to retract?
>> No, it's fine. [laughter] I worked 10
years um for
pretty much mainly on Hilton and some
other hospitality clients.
>> All right. But yeah, I mean it's it's
not a secret.
>> Yeah.
>> Then how did you get into infrastructure
then? How did you become a Kubern I mean
I think I knew you back in Singapore as
a Kubernetes um zealot,
>> right?
>> Made me absolutely made which made me
want to push you away because I I I I
just had bad experience after bad
experience with with Kubernetes. I mean
I use community don't get me wrong and
when it when it's appropriate but uh it
it does frustrate me.
>> Yeah. So after about you know 7 years of
going to customers. So from 2006 until
2013 about um most of the time I would
you know we would we would be there to a
whole day to install a Windows systems
you know we would be having a word
document and we would have our
installation you know with the
requirements for the client because
every
customer we work with they have
different requirements. if they are a
real estate investment fund in
Luxembourg, they have different security
requirements than the hospitality like
the way that they manage the servers,
the way that you get access to a server.
And I also worked for Gadak Cement which
is a whole wholesim subsidiary in
Azarban and I worked and always had to
like follow these manual like
installation steps from a word document
and I wrote a lot of PowerShell scripts
to kind of like automate that process,
you know. I had a lot of fun with with
like um active is it ADO active objects
from Microsoft uh inn net. So so with
PowerShell you actually have like the
whole net. So you could create any
object that the Windows system had and I
could load like uh access database
files. So some of this software that I
worked with used access databases. So I
could use PowerShell to load the access
database, read some of the data, modify
it. So I started making
>> back now. Gosh, you you must be as old
as I am.
>> Yeah. So, so that was a lot of fun like
because we had a lot of bash scripts and
stuff that other consultants had built.
Um but yeah, I mean we as we do the same
thing a lot. So we try to optimize our
work, right? So, so we have some
internal scripts that we have and um
that's part of our professional services
our our um you know expertise that we
bring to to to okay supply the system
right so I I actually spent a lot of
time building unattended install scripts
with powershell
>> uh and it wasn't once I saw one customer
which was kadak cementin they had the
whole VMware that was back in 201 I
don't know 2011 maybe before that VMware
was already spread quite in a lot of
places, but
>> I was working on like preparing a
training session and I had everything
set up on my virtual machine, but then I
had to copy over the settings to the the
actual client server for um for an a
training session and I said, "Oh no, um
I ran out of time and one of the IT
administrators says, "You have you're
running VMware.
Um what's your IP address? let me clone
the VM machine from your laptop and I'll
create four copies for every attendee.
Yeah. And I was like what the hell?
[laughter]
So, so you know after you know spending
all this time you know creating
screenshots so we have a document we we
we take screenshots of what we have
actually done on their machine and then
you know hand over to the IT
administrator. um you know after doing
that flow in many um you know for many
customers I come to this place and
they're like let me you know let me
connect to your laptop to the VMware
port and copy the VM. I was like, uh,
okay, what the hell? At that point, I
kind of realized that all of this
Windows manual process is kind of
nonsense. And I started looking also I
wanted to run game servers. And I
learned I I had like we we bought like a
Power Edge Dell server that we wanted to
put in a data center like a colo in in
Vietnam with a friend to run games on
it. And he needed Windows.
>> Yeah. I wanted Counter Strike uh you
CS:GO at the time,
>> right around 2013. And um at the time he
needed Windows for he he ran a big
gaming uh news website iame.vietnam in
Vietnam and um he needed he wanted to
host an up andcoming game but it was
Windows only. So I ran my my we needed
to run VMs right Windows and um and
Linux and so then I also wanted to have
better performance because as soon as
you run Counter Strike in the VM you
start having performance problems. So I
started to play with like Linux
containers uh and Docker at the time and
that's how I got into Docker originally
and I started going to to uh meetups in
in Vietnam to learn about like I want to
ingest because I wanted to get create a
gaming platform for Counterstrike that
was like ESL existed, HLTV existed.
Those are very big like Counterstrike
related related services and I felt that
they did not give a lot of like
statistics. There was um fragbite sorry
not fragbite got frag in America they
gave oh and esa they had very detailed
statistics uh like about your
contribution to a round they calculated
so they could assign skill points to a
player much better than most of the
other platforms. Yeah. So I was like I
had built gaming I had run gaming
tournaments in in Belgium. So I knew how
to get all of the logs so you could get
every single event from the locks. So
you could tell the the Counter-Strike
server to send all the locks to you. And
I was used to like
>> Yeah.
>> Yeah. I was used basically at the time
you used like like IRC bots, you know,
you say a certain keyword and that
message was received and the bot would
would um identify with a regular
expression or whatever or just look if
the if the text starts with a certain
keyword and then it would execute
commands. So people would say things and
if it had that command then the bot
would respond. So, we had like a bot
that would read the Counter Strike logs
and then would keep track of the score
uh and then keep track of like when it
needs to restart or switch the teams so
they could, you know, manage a
tournament. So, I was like, cool, I just
need to ingest all of the the statistics
about the players. So, I wanted to build
like a platform and I I learned Angular
and NodeJS and Python and try to build
this on my own at the same time, you
know, as a side project. And I I then
really got into Docker and and and go to
meetup. So I I got into the Docker
meetups and and then
>> Yeah, that's cool. Like a lot I mean I I
basically got into this into this game
through gaming and I think that's a very
common uh
>> what do you call it? Origin story for a
lot of people in this business.
>> Yeah.
>> Servers to infrastructure engineers.
>> Yes. And also um going to the meetups
gave you a lot of like insights um into
what other people were doing and allowed
you to talk to people and figure out
like even though I was at my day job I
was working for 10 years with like these
just financial accounting systems and
building you know nets power and
powershell scripts and and things like
that and then now I was like learning
bash python docker like immutable
servers and and and So that was like
really exciting and interesting you know
um but
>> but then you then you got into
Kubernetes hard.
>> Yeah. So one of the meetups that was
around 2014 after the Google people had
announced Kubernetes as a project uh at
the Docker Con. Um it looked way
overkill like initially when I looked at
what they talked about the cublet that
was interesting. Yeah. you could run
that separately to get like information
about your docker demon and the
containers on your host. So that was
like yeah maybe I like the cublet but I
don't like this everything else right
and then
>> the control plane is quite good isn't it
like
>> it was absolutely crazy in the beta. So
back in 2014 uh I think around September
they they went from beta to like sta
stable v1 um around September. So they
had announced it in July and it looked
really complicated and at the time I was
using digital ocean because I didn't
know AWS and I wanted like simple VPS,
right? A a droplet cost like $5 a month
>> and it was great for a hobby, right?
>> Ocean was great, wasn't it? It was so
easy.
>> Yeah. And and but they had also um an a
bounty like if you if you propose an
article and they approved it, then they
would give you like $30 credit to run.
>> Oh. and and write the article for them
and their ex
>> sorry
>> that was a brilliant idea to get people
engaged. Yeah.
>> Yeah. So to to basically create a huge
knowledge base and to have the community
build a lot of interesting use cases on
top of digital ocean and there was an
article from a guy who worked at digital
ocean I think about setting up
Kubernetes on digital ocean droplets but
it was like you originally kubernetes
was all bash shell scripts like you had
to run this script to to build this and
that. I mean it was horrible
installation mechanism and then Kelsey
High Tower had written this um guide for
core OS. So I was using coros a lot
which is like
>> yeah o really good
>> everything is is through systemd unit.
So it was all systemd and then they
built their their fleet
>> on top of system.
>> I love the upgrade mechanism where where
>> yeah so they have dual boot and they had
like a locksmith um to basic and was was
from coros right they used to to track
um the whole fleet when one acquired the
lock to reboot into the second
partition. They also used the idea of
channels. So if you are running on a
certain version of chores and you're
subscribed to like the stable channel
and a new version is available, it would
you know behind the scenes download the
second uh the new version on a second
partition and then it would
>> I think that came
OS
>> slight slight little ch tangent before
Chrome OS I had my startup web converger
which had an update mechanism which I
thought was quite novel I still think
it's novel and that was based on git. So
basically the whole root of the the OS
is checked into git and then the idea is
that it once it's running you do a git
pull and that's how it gets the sort of
like deltas and then on reboot it checks
out the new um updates. Um, so I was
quite and I'm still am quite uh well uh
boasting well boasting or promoting my
method over the Chrome OS one because I
still think the Chrome OS one is a
little bit overkill but anyway,
>> right? Um so so the cool thing was I
really loved Coros and Kelsey was
working at Coros and had this very nice
guide on how to set up a Kubernetes
fleet using Coros. Um but he had only
examples for AWS and at the time maybe
even Google Cloud. was before he he
joined Google and those guides were like
first you have to create your your uh
your private key infrastructure your PKI
>> Kubernetes is the hard way that's how it
starts I believe
>> well it was the hard way before the hard
way was a thing [laughter] so I I wrote
this this guide for for digital ocean
which was massive you know it started by
you know bootstrapping your PII with
selfert like self-signed certificate
authority generating different client
keys for the SC CD client setting up
flannel you know and I I did a full deep
dive into like how does
>> I've forgotten it sounds
>> flannel was a core o um pxlan packet
encapsulation system so it's basically
to create the overlay network right um
when kubernetes that's one of the great
things about kubernetes right every
container within the fleet must talk to
must be able to talk to other containers
that may be running on different
machines so they create this overlay
network on top of the underlaying cloud
network. So you create like maybe three
core o droplets and then you create a
bunch of flannel um demons that keep
track of the range of IP addresses
containers within their host can have
and then flannel whenever a network
packet comes in encapsulates it that
network packet on the overlay network
encapsulate it in the underlay network
to then send it to the right node and
then that decapsulated and then send it
okay the source is this container. So,
so Flannel was a very basic one you
backed by CD and then um kind of merged
with Calico because Kalico added
additional ways of encapsulation that um
were less like latency in introduced
less latency. So, so it was super
interesting. I mean all of these tools
came out of Coros um and actually this
was after somebody within the Docker
meetup had asked like hey you know this
Kubernetes thing does somebody want to
look at it and I had and and it was
around the V1 release. So a lot of these
stuff was um you know getting
stabilized. Uh so there were less bash
scripts to download all the all the
binaries. You actually had proper Golang
binaries that you could download from
the releases. And so I was able to to
talk about it like watching Brandon
Burns and Kelsey High Tower talk about
Kubernetes and seeing the live demo of
Kelsey High Tower where he just you know
triggers uh a replica set. I think it
was later that they introduced
deployments. Originally it was um
replication
uh it was not replica set it was like
replica controller
um but it was very confusing because the
name of the object was called like a
replication controller where you give it
the number of pots you want to run uh
but then in real in reality the
controller is something that runs inside
the AP inside the control plane that
that looks at the request and the actual
object is the replica set is how many
you want to run of them right so then
they renamed it on v 1.1 or 1.2 and they
introduced a thing called the deployment
to basically control the rollover
mechanism like how do you want to roll
out between different replica sets. Uh
so that was all introduced around the
time that I went to for Asia in in
Singapore uh and do a presentation about
Kubernetes there. So I was talking about
this amazing, you know, mechanism of
replication controllers and then they
changed it all to replica sets and I was
like I'm very confused about this new
stuff.
>> I was a little bit puzzled about replica
sets myself because because ultimately
>> it seemed attached to to how you would
want to scale your app because because
if you have too many replicas then you
you're going to maybe take too many too
many uh CPU or whatever RAM resources.
And I thought
>> everything it changed so much
>> like how like if I'm running my app how
many replicas do I need? Do I need two
three four five 10? Do I do I do it to
to maximize the resour so
>> like I I never
>> when I'm talking about 2014 15 all of
that was like very basic. Um today you
would obviously use like autoscaling you
would um even you have vertical
autoscaling now you can resize pods
without restarting them. Those are all
things that you can do stable because
like I just
it is
>> because because a few years ago I just
thought I I just don't trust this
autoscaler but um but yeah may maybe I'm
>> so so that that's how I got into it
right I mean initially I was doing coros
for my friend startup um and every time
the droplet every time cor updated
nobody has access anymore because
[laughter] I was maintaining their SSH
keys separately
>> what was relation ship between core o
and kubernetes because coros came out of
docker didn't it? No what did it
>> no coros is a was a company um that was
also called coros and they had an um
they had an operating system called
coros which was a container centric
operating system. So you would run even
your debug tools you would run
everything through contra containers and
the actual it was kind of like a
precursor to Talos uh today I think
>> um that idea of like using docker images
to like I don't know um get your basic
bash or something well I mean bash is
not a good example but like your tooling
yeah
>> yeah and and chores originally they they
had their own scheduler right um that
they built separate from kubernetes
which was fleet and fleet
They basically extended the idea of a
systemd unit to um to something that you
could run across multiple nodes and you
had some scheduling constraints on the
systemd unit. I forgot the name of it
that uh it was a set of units or
something like that. Uh but as
Kubernetes became more popular they
deprecated their own fleet and they
started they adopted um Kubernetes and
then they built their own flavor of it
called tectonic.
>> The Kubernetes is system D3. Um, so it
feels like systemd went head-to-head
with Kubernetes and Kubernetes one,
right?
>> M, not really. I mean, systemd was the
way to run like was replacing your
upstart and your init systems on the
operating system, right? And Redhead
made it the default and a lot of uh
distributions like rejected it, but then
Ubuntu adopted it and then everyone
followed.
>> Uses a different well c what what's the
name of the control plan? cublet or
whatever to
>> uh no kubernetes completely decoupled
from it like systemd was purely your
init system on your operating on your
>> how does kubernetes managed the pods and
>> well that's the container runtime
>> right
>> so the container runtime interface so
originally a lot of them use docker to
to use to basically like pull the
container image set up the file system
launch the process within the cont like
the name spaces and the control groups
set everything up for you, right? Um,
and then over time there was this uh
split between Docker and Coros because
um Docker was moving fast and breaking
things and so Red Hat froze the Docker
versions and then Coros created a new
project called Rocket which is using
systemdspawn.
>> Yeah, systemdspawn. Yes.
>> And that was like Leonard uh was it name
Leonard like pit one
>> butering. Yeah, he he he basically said
he came to Singapore as well talked
about like systemd and spawn is how I
debug. Yeah, systemdspawn is how I debug
um kernels. So I use systemdnspawn all
time. It's a very solid product and then
Cororo built rocket on top of it and
they added um the good thing about this
competition was that they said like okay
Docker is using very insecure uh like
they didn't have proper verification of
the images and and so Koro said we need
to focus on that and Docker was like
that's not our priority our priority is
developer experience and Coro says okay
we're building systemdspawn and we're
adding this GPG based signing of images
and and layer like image layer
verification like basically what
enterprises need for security and the
response of docker was there well you're
using gpg is so old we use tuf like the
update framework and we are using like a
notary for signing layers and and they
they came up with like a new completely
new tool set I think docker at the time
had a lot of money as well a lot of VC
investments and so they docker was like
this one company and and Solomon hike
was like fighting super hard against
these giants Google redhead and and
others and And um
>> yeah, they had their own and whatever.
>> Yeah. So when when they did a Docker con
that year that um Cor and Stroet, they
made an exposition about like um the the
whale at the start of the conference.
They did something. I only watched
everything on Twitter. I I never went to
any of these events, but I saw on
Twitter that they had like this this
opening of the conference and the rocket
launch failed. And hint hint, rocket
failed. Like [laughter] they would do
these things all the time. Oh man, we
can I'm just conscious we this is
supposed to be the intro for your grid
um app.
>> Oh my god. This is going to be a video
onto itself almost
>> but like
>> No, no, no. Yeah, just a background.
>> Why did core OS fail actually?
>> It didn't fail. It was acquired by
Redhead.
>> Okay. Well, they did I mean it did fail
in my book because it did seem to go out
of the view that it seems to have lost
minds. I think the biggest problem was
they had built tectonic which was like a
terraform based kubernetes flavor. So
they had their own um boot system. So
they had like this um cloud init
extension called I forgot ignition. They
had this ignition u it's like user data
on steroids uh for pixie booting on on
on networks like your coros and so on.
It was amazing like I never ran cor OS
on on LAN but they they were focused on
like enterprise customers not
necessarily running in the cloud and
Tectonic was all Terraform with like
ignition provider and the problem was
Tectonic was really expensive like the
license to run Tectonic like you could
run it for free but you wouldn't get
some of the like SSO and other
enterprise features so originally
Tectonic
>> was their their commercial offering What
is the link with Terraform? You you you
would use Terraform to provision it or
something or
>> Yeah. So they they had the like Tectonic
was basically a whole bunch of Terraform
packaged up with Kubernetes bootstrap
with ignition with on top of core OS. So
it would give you a fleet of coros um
nodes and it would bootstrap CD and the
control plane for Kubernetes and it
would bootstrap every node to join the
cluster properly and all that. So
tectonic on top of that it was a bit
like open shift right. So, so at the
time a lot of these kubernetes
distributions came out like open shift
um from ranch like there was wrencher
and there was also from fedora or susi
linux they had also their own flavor and
pretty much everyone was launching their
kubernetes flavor
>> um and before the clouds launched them
like Google had
>> I think had nothing
>> yeah I did not like it
>> it was I mean it's the same thing with
like I I So my background's always been
very operational.
>> Sorry,
>> it was the most minimal one. I think
that's why I was attracted to
>> it was the most like easy one like
docker compos like the reason developers
like to run docker compose is because
it's easy almost no dials and knobs same
like wrencher you would just run it it
would just run it would spin up
everything and it would just run and I
hated that because I I was deep into
like spinning up my CD my own
certificates my own you know user data
at that time. So, so, so the thing is I,
you know, you start digging in really
deep and then as you are, you know, I
wasn't working at a company that was
like having real needs. I I wasn't
working at any company using Kubernetes,
right? So, for I was doing this all for
fun. So, all of this stuff that took
away my fun like rancher that was no
good. I wanted to do it myself. So I
remember very early somebody asked like
I was talking about running a mail
server on the on on on digital ocean
lotion and somebody said why wouldn't
you just use AWS and I was like oh you
know why would I pay all of this extra
money [laughter] I can do it myself and
then of course you you get called
>> Yeah. No and then you get called in
these problems um because my friend
startup he's trying to send emails and
then they go into like the they go into
>> Yeah. they go in quarantine and then
he's like, "Oh, Vincent, what is this?
Like our our spam house uh reputation is
bad and and then it's because you're
using digital ocean IPs and they are
obviously like blacklisted in spam house
and so then you start to get all of
these issues and also you know once I
got all of the Kubernetes figured out
and I could [clears throat] do cluster
upgrades easily and all of that and then
you don't want to bother with it anymore
after a while like that's done. you've
you've played enough with it and now you
want to just focus on deploying things
on top of it. So it took a while to get
to that stage and also when you're in a
company and you have to deliver a
business value and not just spin up
clusters
>> then you start to say actually you know
I can use
>> in your current role are you still a
Kubernetes u uh monkey or whatever the
term is for
>> uh so my last role that I use Kubernetes
was like two years ago.
>> Okay. So now you've like gone
terraformish. Well, you got CDK or
>> Yeah. Um
I I really was interested about CDK. I
just never had the opportunity to play
with it, right?
>> Um so so I got into
>> an organization that used CDK and then
um I saw the benefits of it and and then
also I worked with I worked plenty of
times that I trained people how to use
Kubernetes. And when you use something
like ECS and you have something like CDK
that can create container definitions or
Fargate backed uh you know just define
my workload it's so much easier to to
work with than if you have to like you
know define everything with Argo CD and
GitHubs and and endless lines of YAML
and and so again it's one of those
things that's very interesting for a
while and then once you've done it you
get really bored of it [laughter]
you know initially.
>> Well I mean yeah like I think I
empathize with you. I I we we we're all
exposed to these these technologies. Um
and and we as you should and like Yeah.
I know about Kubernetes, I know about
Terraform, I know about CDK. The more we
know the better we are really. It's not
like I do find it weird when
>> the more we understand the trade-offs as
well.
>> Yeah.
>> Because that's a problem. Like we don't
really know the trade-offs. If we only
know one tool, we think this is the best
tool ever until we start using other
>> tools. When people try to sell
themselves as as a Kubernetes
infrastructure engineer, like why don't
you learn learn other things, a dude?
>> But the good thing is though, like I use
Fargate a lot at work now. And there's
several cases where we're like, oh, we
need to do this thing or that thing. And
I'm like, well, that that would just be
an ingress manifest on Kubernetes and
that would just be like something like a
service mesh or like an
>> trade-offs, the comparisons. That's very
>> you very quickly like find the
limitations where you're like well in
Kubernetes I would have I would control
my my service mesh or my uh overlay
network. Uh for example one issue that
we had is we wanted to save cost and use
like memory swappiness and like be able
to because we have very bury workloads
of different um services. So one service
we don't need very big machines but when
they do need the resources when certain
request comes in they they need to be
able to to to take up a lot of memory
and CPU and not necessarily fight each
other. So the idea was to basically
overs subscribe nodes. Uh which you can
do easily with Kubernetes, right? You
can you can have only two nodes and and
give them give your pods a lot of memory
even though you don't have the memory
available. Um Kubernetes will be able to
run them and you can't do that with
Fargate obviously because Fargate you
have to give it exactly what you want
and it's going to run exactly that. You
can't really burst. Um so so then we
needed to run our own ECS nodes and um
that was before AWS announced managed
nodes by the way that they also just
announced like a month ago. Um but
anyway
>> wait a minute AWS has had managed ECS
for a while. I mean Fargate is managed.
What do you mean?
>> No no managed managed autoscaling groups
like um you didn't have that until like
a month ago.
>> Okay, I'll take it away.
[laughter] Okay.
>> Yeah, they they just announced it like
you could spin up right your capacity
providers in ECS can be either Fargate
capacity provider where they take care
of everything and you just say the
dimensions of what you want and they
will just you know make it available but
you can't oversubscribe really much.
>> Okay. I see. Okay. So we I think we need
to to to to what do you call it uh
connect to your your grid project. So,
how would you introduce your grid
project? So, that makes the next video
kind of
>> makes sense.
>> Um,
how do I
>> Well, let me let me see if I can jog
your memory. Like, I think you
introduced grid to me because you said
that, you know, the the whole open tacos
things was interesting, but it it didn't
support strongly typed
>> right
>> stacks. So the grid API is sort of
demonstrating that you can you can
properly track your your infrastructure
state
uh yeah in a compelling way using yeah
the the strongly typed CDK stacks.
>> Yes. So, so a lot of these projects that
were introduced like from Terram team
which is the state graph and from digger
which is the open tackle um they're just
focused on classic terapform which
doesn't expose a lot of the type system
of the resources right so
state graph does promise that every
resource has a type so it should be able
to give you more information it get it
it gets rid of all of the states. So
instead of having like many many small
states, you have one big state graph.
Every resource is in there. Every
resource has like attributes that are
strongly typed. So you don't need to go
through the state as a boundary or as an
encapsulation mechanism. Um because
everything lives next to each other,
right? Um with with Digger they are
still allowing you to create multiple
states and you are able to define the
dependencies between the states and
you're able to define arbback on top of
that and now they're integrating with
work OS for like you know your
deployment mechanisms. I haven't looked
at open taco recently. Um but the both
of them I mean I I I kind of like the
open taco approach because I still
believe that you want to encapsulate
a little bit like the the the for
example the platform team may want to
encapsulate the landing zone that they
provide right um what we as a service
provide to other teams we maybe only
want to expose the subnet ids and the
VPC ID and we don't want to like have
all of the VPC information network
gateways everything uh All these
resources don't mean much for other
teams. We just say this is the landing
zone and we have a couple of outputs for
you, a network ID and a subnet ID and
you can launch in there. Right? So to me
a terapform state as an encapsulation
mechanism still makes sense. I don't
know how state graph is going to solve
that problem. Um and I talked to them
and they were like we want type
information just like you. Um but
they're building it there on their own.
They're doing it in Okamel and I haven't
been really been like able to
communicate with them much
>> in Okamel. Oh man.
>> Yeah. So, so then open taco they're
building this in Golang which is much
more approachable in in a DevOps
ecosystem because you know Terraform
Kubernetes everything is Golang. So,
Golang tooling uh is is available and I
try to talk to them but they don't
really respond at all and also because
of the reaction of the community towards
open taco it feels a little bit like
persona non grata. So, um I feel like I
want something similar that allows me to
expose the deeply typed information that
I have from my library. So I have a
library that gives you these higher
level constructs. We talked about it. We
showed like this the way that you can
visualize it. You can define like hey by
the way my constructs imple can be
displayed on on a diagram and this is
how it displays itself. So you can add
these interfaces on top of it. Right.
>> That demo that we recorded just for
people's context was recorded like two
weeks ago.
>> You said that you were going to you were
going to specitate the uh the or
>> authentication. Yeah. I think I said
[clears throat] in the video back then
that I don't think it's going to be
painful.
>> It's going to be painful. [snorts]
>> Yeah. So, so the Was I right, Vincent?
For once.
>> Yes, you were right, Kai. [laughter]
You want
Okay. So, so the speckit experiment was
two, three weeks. I think by the time
that we recorded demo, I had spent two
weeks on it and I had it had raced
through all of my questions and it had
built a monor repo with Golang. It had
built a CLI and SDK. has built a UI,
hooked everything up and you was and
that will be shown in the demo. Uh the
one thing missing for me to deploy this
into my organization is to have a strong
authentication and because you know you
want to be able to integrate with SSO uh
and things like that. So I thought you
know I'm just going to ask packet to do
that. And I think my biggest mistake was
to to assume that this could all be done
in like one feature.
>> Uh I didn't break it down. I said like
this is authentication, authorization
and um you know no web login and
everything
>> SL
no SL just OIDC uh and and so specit did
a great job three days planning it um
like I said I spent 70% time planning
and then 40% time implementing for some
other features so I was like I was very
confident I was done with the planning
phase um however it kind of
>> when when you say planning phase were
you using like the plan mode of claude
or would you use plan mode of spot?
>> Yes, because the plan mode of cloud
works within a context window, right?
And then as soon as a context window is
done, maybe you can carry over like with
a compact, you can carry over some to-do
items, but it's very limited and a lot
of context gets lost. So the spec kits
planning phase is really focused on
capturing all of the functional
requirements and like gap analysis and
edge cases and writing that down into
markdown.
>> Did you ever play with beads in the end,
Steve?
Did you find Yay or nay?
>> What's your So, so full honesty, I been
playing with it only today and so far um
it does some interesting things. I think
Beats prompts the agent to spend a
little extra time to to do its own
planning phase on each individual issue.
So my my biggest problem with speckit as
doing this oidc which supposedly I said
was going to take me three days and it's
been almost four weeks. Um, my biggest
issue is that the resulting task lists
became a 2,000line markdown file and
even you know even when I start on one
phase maybe six tasks within that
massive list of like 80 tasks um it kind
of like blows the context pretty fast
like hey uh cloud we're going to we've
got this beautiful plan and research and
everything.
>> How do you track the context? is like I
think in Claude you have to go
slashcontext every time and that's
annoying as hell.
>> Yeah. So I there's this status bar thing
now that you can do but I've got only my
>> I don't think you can
>> but there's quite a few people that
write tools that run like demons in the
background that that monitor the context
and so you could run those demons and
then display it in the status bar.
>> How do you track it then? No,
>> I I do context. [laughter]
I haven't installed those state I I just
I just initiated the status bar in my
cloud right now. So I I do have like my
original bash prompt. Um and I seen
people talk on Reddit about hey here's a
demon that shows you your tracks your
usage. You run the demon and then your
your bash prompt can show
>> how everyone wants this but uh they they
haven't delivered on this status bar
shown.
>> But they they have delivered on other
cool stuff but you're really derailing
me. But they have delivered for example
on on the ability to like you can
trigger a plan mode get a plan and then
you can control G edit it control J J
the the G how [clears throat] you say G
>> okay
>> gangster um
>> yeah golf
>> so you can you can edit the plan now
before when the plan wasn't right you
had to you put in a prompt and say no no
no you're missing this and then it would
do another plan and then it would miss
something else
>> okay so going back to beads your
thousand line markdown or whatever you
>> so so this a problem right uh I've got
this massive task list from the speckit
uh research phase and planning phase so
not the cloud mode like not the cloud
code planning but the specit planning
which is multiple steps a big workflow
generates a lot of research and creates
very detailed tasks of like multiple
phases it became huge because my feature
was too big and I should have probably
cut it down but what I'm hoping now um
is with beats it actually parses out the
tasks and tracks them not in a markdown
file but in like a database like an SQL
light right and it synchronize the
database file to a JSON format like JSON
L so you can you know committ it to your
git so you can see the diffs yeah and
they can even handle the merges of
completed task better supposedly but I
haven't done that yet so so with beats
now I had a actually just had a very
nice experience which was it had
completed three tasks and it hadn't
blocked so beats speeds ads workflow and
it had unblocked the next task and then
I was not using son I was using haiku
and haiku
looked at the issue that it needed to
work on the task that it needed to work
on and it went into this like planning
mode which I think is something that
beats introduced because I've never seen
cloud do that until I activated beats
and after it went into the planning mode
it came up with its plan and it was
different from I mean it something
wasn't right I there was some mistakes
in there I was like that's not right And
so the cool thing is I didn't have to
open my markdown file and then scroll
down to this like phase number eight
which is at line 800 and then find
exactly what was the original task that
it was supposed to work on. I could just
run beat show that issue originally that
you started with and I saw immediately
like hey there's a mistake here. Uh and
so it it really allowed me to slice and
dice directly to the particular task. So
instead of having like uh this massive
markdowns that you have to also blow up
your context with you can now like very
directly ask questions about partic
particular issues and look at them and
find the links between them. So because
it creates a graph of issues right so so
far
>> of the the links have you like linked
them up like showing which ones depend
on another or does it do it
automatically?
>> It did it automatically. So I I asked uh
yeah I
I have recorded the loom about this
process. Um but it's a bit messy. Uh
basically what happened is
I was going back and forth between cloud
and Gemini. Gemini is not good at
writing code but it's great at reading
code and giving like a review of another
person of another plan. Codex can do the
same thing but Gemini does it much
faster. So what happened is cloud came
up with this plan. we're going to do
ABC. And then I went to Gemini. I said,
"Mate, does that make sense? Like, can
you go look if that already exists?" And
Gemini says, "No, none of these things
exist. That is [ __ ] but that is
correct." So then I went back to cloud
and I came up with like a 300line
um prompt and and then I push push it
into um a new cloud instance with Beats
activated because you have to like
install the MCP, you have to initialize
your agent, you have to make sure that
it knows that it needs to use Beats. And
then I gave it this 300 line prompt that
I fine-tuned with Gemini and it went
ahead and created okay Gemini made it
very clear we need to do this this this
then this and then cloud used beats
created all the issues linked them
together what what depended on what uh
what unblocks what and then created a a
beautiful graph and it started with the
ne the first two issues that were
available.
>> Show a graph.
>> Um
>> you're right. Uh I haven't I haven't
looked at the I haven't seen a graph,
but I've seen the the full JSON output
and I've seen the full list and I've
been able to look at the issues uh very
quickly. So I haven't uh tried the graph
yet but so far like I said I think beads
adds through its MCP tools some
instructions to like prompt cloud when
it picks up an issue to do some
additional research and and the issue
itself that was created by cloud within
beats actually has a lot of context. It
captured all of the requirements,
acceptance criteria and things like
that, which is I was surprised because I
thought, you know, when you have a to-do
list in in cloud, it's just like one
line. I need to do this one thing. I
don't know how cloud tracks more
information than that just one line. But
in Beats, I can see it. Like there's a
title and there's a description. It says
like this is what we need to do. This is
why we need to do it. These are the
files we need to change. And this is the
acceptance criteria. Was like, oh,
that's pretty cool. I'm not sure. I'm
not a thousand% sure it's the MCP
because I noticed when I hit this MCP
bug last week that that uh Claude, for
example, was just invoking the BD CLI
right on my my sh.
>> Yeah, I I had to bootstrap um the agent
to make sure that it has like you need
to use the tools, not not the CLI
>> BD quick start or whatever inside your
agents MD or whatever.
>> Yeah, I did. I did. I did the BD on
boarding. Um, and so yeah, but I also
wanted to originally like why do I need
an MCP? Like I hate MCPS because
>> Yeah, I don't that's what I was going to
say next. I don't think you need an MCP,
but uh just because
>> it was broken and it seemed to still
work.
>> Yeah. Yeah. Yeah. And um I also
installed the agent skill. So be beats
also has like this new thing from cloud
called uh a like skills.
>> All right. I think I think on the web
page you can it's called a plugin. Is
that the same thing? No,
>> I'm not sure. So I didn't want to
install the plugin. I I didn't know what
it was going to do. So I actually went
through everything that the plugin does
myself. Like I installed the the the
CLI. I think we you have to do anyway.
You have to install the CLI and then I
used UV to install the tool which is the
MCP. So I can run the MCP directly. I
did not install it as a as a as a as a
plug-in. And then I had to do the the
the gith hooks, but that's part of your
BD init. So when you init in a
repository, it will create your git
hooks. Then it had something like do you
want to go multi-reo? And I think that's
one of the cool features is that it can
do multi-reo. But mine is a very big
monor repo, so I don't want to do that.
So I was like, it gave me a warning.
>> I didn't know that.
>> Yeah, there's a demon.
>> Yeah,
>> that's this is really good. Okay. I
mean, I think we have to cut it here
because I I
>> think we need to do a separate session
on beat. Yeah,
>> I don't know if you have enough for
intro. Uh, but yeah,
>> we got plenty for intro. I mean, I'm
hoping just to cut this. I also need to
go and uh yeah, and I'll time stamp it
so people could skip it if they wanted
to. Okay,
>> by the end of this week, I want to um
try beads with speckit. So now I'm
learning it like on my current task like
but then the next step is I want speckit
not to create this 20,000 line markdown.
I want speckit to use beats. I haven't
done that yet. Um, so I'm using I'm
learning it first. Yeah,
>> sounds awesome. Okay, we'll keep in
touch. See you.
>> Bye. Okay, see you. Have a nice day.
Really really enjoy this. I think we
covered a lot of things. I think
>> maybe.
Okay, one more thing.
>> Um, so so basically we talked about open
taco and all of these state management
solutions also. Now we just talked about
the integration patterns, right? We
mentioned that you can you can use a
variable file on disk or a big config
file that keeps track of all of the
different like a dictionary of all of
the different integration keys. Right?
So at my organization we we started
originally trying to use an integration
registry. Then we move towards like the
teams only publish dev from their
product repo and when they want to go to
staging and need to integrate there they
publish their infrastructure as a
package and then we consume it and
integrate it within our monor repo. So
we have a big terapform monor repo. A
lot of organizations have a big
terapform monor repo because you have
those file system requirements to read
data, right? Um because we couldn't use
the integration registry. So instead
they publish their artifact, they
version it and then we integrate it. The
same for production. Um but I still want
to have the ability to go across
repositories and integrate without um
you know having to publish things. So
that's why I started to build this thing
called the grid which is around Terra
constructs. So Terra constructs has
already the capability of strongly
typing your outputs. So if you need to
integrate on things, you know exactly
what the shape will look like of what
you depend on. For example, if we have a
cluster, we we may have a VPC ID output.
We have subnets which is an array of
strings. We may have more more
complicated integration points, right?
Um but let me just let me just run the
API real quick. API surf
uh not server surf
binary.
>> Let's put it on the path. So now this
the the grid API is running and I will
go into the web app and run the the the
dashboard. It's a very basic dashboard.
>> Everything's a bit slow right now. I
don't know why. Okay. Maybe it's because
I have 100 different things open.
>> Yes, it's V hot moderator load. Vue.js,
right?
>> Uh no, this is React. [laughter] I don't
know anything about front end. Um so so
this was all written using specit using
uh specdriven development.
>> Holy moly.
>> And yeah and and some of the UI elements
originally bootstrapped by bolt. Uh but
then yeah so so this is basically the
grid when you are creating for example
the network which has a bunch of in this
case there are zero outputs because I
haven't really applied anything. Um but
then you have dependencies that define
for example the staging cluster depends
on the subnet ids from the network and
on the VPC ID from the network also the
staging database depends on the VPC ID
to provision into the network
>> right so we have these dependency
trackers and this is really the idea was
mainly from open taco right
>> why why are there two arrows going into
the cluster am I going
>> because multiple every output is tracked
individually
>> okay
>> okay I I can do a demo where I actually
apply things with Terraform so you can
see the colors change when things and
then you know why there's multiple
errors. This this is a a preset database
with some filtering. So I can
>> you know we we we need to do like a
visual
I think the theme for the next chat is a
visual infrastructure because I did want
to talk about uh Adam Jacobs uh oh my
god
what is this startup called? Help me
God.
>> Uh system initiative.
>> Yeah
>> I right
>> because I'm think I'm thinking system
initiative when I'm looking at this.
I'm not building uh what he call a
dynamic graph where every node has like
different their own um hooks on create,
read, update, delete. So it's a
programmable graph. That's what system.
>> Okay. Okay. So yours is more of like a
like a visualization type of
>> mine is a terraform state on um manager
and the idea is to integrate tightly
with terra constructs so that all of
these um all of these
points here are actually strongly typed.
So if I if I'm
you can see your level twos and things
like that in here.
>> Yeah, but I'm I'm using modules as an
encapsulation. So whatever the product
team they can be writing terapform
modules in here. Uh sorry I'm not using
modules in encapsulation. I'm using
states as an encapsulation. So the so in
my case the platform team is using the
AWS VPC module to provision the the
network and all.
>> Okay. Okay. State state state. Got it.
>> Yeah. And if they want to expose the VPC
and the subnet ids they should be able
to expose them as with the schema. So if
they're doing it using terra construct
the schema is attached to the L2s. So if
you you know you say to the L2 push your
outputs out to your state so you know
you make it available as a as a contract
to other teams then other teams when
they use Terra constructs they will read
that output and they get the schema with
it. So they know that this this output
has this shape because this is one of
the problems that I have when I was
using the integration registry, right? I
what are the parts that write things and
how do I find the keys that I need and
what is the shape of those keys? How do
I write them down? How do I read them
back out so that I get a strongly
versioned um feedback
>> contracts and stuff? Yeah.
>> Right. So let me let me uh do a database
reset
here. Um go back make DB reset.
It's going to delete the Postgress
volume and restart it.
>> Okay. Oh,
>> by the way, um why didn't you use SQL
light? You just
>> It's I'm using an ORM. Uh and it's using
the PG dialect if I want to use SQL. I'm
actually adding SQL light as a next
step.
>> Um
>> that's that's one that's the next
feature that speckit's going to be
working. Unsurprisingly, Claude is an
absolute demon with uh with SQL Light
because SQL Light has like no proper
golem times and types and stuff, right?
>> Um I don't really know. Couldn't
>> When you say demon, do you mean the
beast like really good at it or the
demon like chaotic?
>> No. No. I'm It's really good at it. Like
it able
>> I thought demon like like it's a devil.
>> No, I love it. it like it it was able to
create these like materialized views and
other optimizations to to make quite
complex views really simple to generate.
I mean it's so incredible really.
So I I will restart the grid API server
and I will restart the web app.
Okay. And now if I refresh there's
nothing in there, right? So now if I go
to the
>> by the way you can you can bootstrap
tasks in VS code if you have instead of
like
there. Yeah
>> it's it's just search VS code tasks
you'll find out how to do it.
>> Okay I'll need to do that. So I go into
the example Terraform. So here I have a
some setup and I should clear but I will
just create a network and um okay so I
go into the network I
I remove anything that's there. So right
now there's just the terraform
configuration which is
>> just um a null resource. It's not really
anything. It's not using AWS but it
simulates a VPC output with the ID of
the null resource and a subnet ID. It's
not the list. It's just an example.
>> Go to the top of the file. Why did you
Okay, so you just specify the provider.
Oh, actually
>> it's a single file. Okay.
>> Yeah, it's all it's all it's it's really
just a sample Terraform configuration
and I will use the grid uh control. So
this command line currently is just a
sample CLI implementation. For my
personal use, I'm going to use it to
integrate within our bootstrapping
because we have like a a Golang CLI to
bootstrap Terraform and so I'm going to
use it to automatically integrate with
the API. So the the CLI is just one
sample implementation that I include
with the monor repo but I have my own
that I I need to integrate it into. So
I'm using state create to create a new
state and I have to give it a logic ID.
So this is one of the first things in
terapform or in infrastructure a lot of
times names change. So maybe this could
be like the uh product a network or
something like that. But over time we
realize that actually product a network
should be shared and it should now
become shared network. So the logic ID
is decoupled under the hood. generates a
unique identity separately. The CLI uses
UID v7 but this is again the database
accepts whatever the client wants to use
>> that's actually uh a really good idea
because the minute we have to change our
TF state uh
>> it becomes a nightmare more so if you
use back end key uh I'm I'm always just
yeah I hate that
>> you need to do migrations then you need
to keep tracking where the other states
were that you depend on
>> yeah so I like this idea but I mean
you're only just using it to just keep
track of it you're not using it to help
manage
uh
what uh the logic ID yeah the logic ID
is is is a is a mutable attribute of the
state but it can be uh but it is
globally constrained as unique so across
the postress there's I mean
>> I I like the idea but like you're not
using it to actually store the state
you're just using it to keep track of it
of course
>> yeah uh yeah we're just we're just using
it to keep track of it as a unique
identifier
>> yeah it's a good idea
so at This point I have created by the
way I have not run terraform apply yet
but if I refresh and I will make this
like polling uh with like web workers
whatever but right now I just forced it
to be to this is one thing when you do
specd driven development it's really
important to scope things down and at
this point I thought like this might be
too complicated so I put it very
explicit put
>> I mean to be honest I'm I'm gang refresh
I don't like to uh to wait for things to
happen
>> automatically so now terapform init and
apply
will then
register the subnet ID and the VPC ID as
outputs in in the grid. Right? So this
this is running Terapform, right? I'm
not running anything else. This is
literally just Terraform talking to the
grid API and then grid API is extracting
the outputs and keeping track of them
okay separately. So if I do grid ctl
list
>> uh state list,
>> I can see it. I can also um I can see
it's clean because it's just been
applied. So if I go to my uh cluster
which needs to depend on the network,
let me remove every terapform file or
grid uh file that should be in there. So
it's only the no resources again that
are in here, right? And in this case the
cluster needs to read the network VPC
ID, right? It it depends on that. So I
can say grid ctl state create cluster u
logic ID, right? And then grit ctl u
deps add from network and it will bind
the outputs of the network and this is
where the type will be important right
but right now this is a non Terra
construct demo this is pure terapform no
typing yet right
>> so in this case I'm the the two the the
selection is a bit weird you need to
press enter I'm going to change that but
anyway um it was a default
>> generated by AI I can tell
>> yeah [laughter] I think it's a pterm
default so right now the network and the
cluster has a dependency and now you see
why these errors are separated because
you have two different outputs and they
may evolve separately. So the cluster
depends on the network.
>> Sorry, the yeah the cluster depends on
the network. If I do grid ctl state
list, I can see that the clust the the
cluster is stale because it has not been
applied. It has not been observed by the
grid API, right?
>> The grid ctl state in it again generates
the
>> the backend config for me.
>> But now comes the interesting part. I
can use grid ctl or whatever however I
integrate the SDK into my command line
or my Golang tooling to to in or to sync
the depths. So to sync the depths means
it's going to generate the remote state
lookup for the network using that unique
identity and then pre-generating the
network locals for me. So I know that
there's a subnet ID. Again, this is
because I declare that this state needs
those two outputs. So it's going to
generate
>> you're using the data is using the grid
backend to grab the to make the link.
Okay. You so you're not relying on the
file system.
>> So I have yeah no no file system. So I
can go across repositories right. So
this is an API server which is our think
you can pretty much do this with space
lift. You can do this with Terraform
cloud for sure.
>> This is something I think would be
incredibly fun to deploy in my
workplace. So I mean do you have a
standalone binary which I can start
running and linking up uh different uh
state files and and drawing a graph? I
think that has a lot of value actually.
It has a lot of value. This is going to
be Apache to open source. I want to open
source this once I've got the type
schema integration with Terra construct.
I it's right now it's in GitHub private
repo. I can give you access. Um I'm not
sure about open sourcing it because it's
very I mean at this point it's similar
to open taco. I have to be honest. I I I
talked to the Open Taco people. I
understood how they use it.
>> It's not Open Taco, it's the [laughter]
grid. Um they're they're doing great
work with Open Taco by the way. I look
on the pull requests, they are adding a
lot of features. They added SQL light
already and and they they're using
Lightream. I I think that's what
>> So they they bas So so there's a lot of
overlap what you're doing in open
typing.
>> There's a lot of overlap except I want
type schemas and they're not talking to
me. [laughter]
So, I'm like, like I said, I told them
that I could oneshot this in cloud, so I
took 10 days to oneshot this in cloud.
[laughter]
>> Oh, man. I'm loving the innovation here.
I'm loving it. Um, yeah, I mean, I I I
definitely would love to to to have this
visualization on on some state files.
Um, but I don't I'm just playing I'm
just playing devil's advocate here,
Vince. I just I I I see myself
>> u enjoying like a visualization
>> but not the type schema.
>> But uh but even the type schema that
could help me uh to do some bugs or
something like that. Um, I mean that's
the way that's the way I see typing is
like helping me figure out where there's
issues
>> uh like I I would see it as a
visualization but like but that's that's
a hard that's a hard sell as a as a
product like you know like it's
>> I'm not selling it like I'm I'm so my
main goal here is um to basically make
something available that I can use
myself. Also the way I designed it, I I
make the package the SDK is a strongly
type Golang and because I'm using
connect RPC, I also created TypeScript
package because that's what I use in my
dashboard in my web app. So in my web
app, I'm actually using the um the grit
um where is it the grid? Where is the
grid tacons? Here I'm using the TCON. Um
I'm autogenerating the clients in
Typescript and in Golang. Uh it could be
Java, whatever because it's using
connect RPC. Uh al although I do need to
wrap it because connect RPC handlers are
pretty horrible. And anyway, what I want
is to basically use this one in my
library to
>> interact grid. It's some third party.
What is that?
>> No, that's my workspace. So that's my TS
SDK, right? It's autogenerated from from
the protobuff definitions and then a
little
>> tons
constructs. Oh,
>> it's all my project, baby. [laughter]
>> Okay. Okay. I'm a little bit slow. No,
but it looks I I definitely see the
value in that. I really would like to
try that out, actually.
>> Yeah. So, how it differs from open taco
is they're focused on like you can
control the grid using the Terraform
provider. My goal is I'm giving you an
SDK. I can generate the terapform
provider from the SDK. I can generate um
JavaScript integrations with the grid
which is what I'm doing for my project
because I want you know and I want
additional endpoints control. I want to
control what is it that you can attach
to a state. I want to be able or to the
dependencies the outputs itself. That's
what I want to control. So um so I'm
doing this currently with with specit
and I'm telling you this like 14 days
now and I've been able to bootstrap the
repo, build the state dependency logic,
add some CLI improvements, wire up the
dashboard um and now I'm working on
authentication and authorization. So
OIDC integration
>> actually I'm curious what it ends up
doing there. I was think in a web app or
whatever app is always interesting. So
my prompt was very very dumb. Um and it
took me I think the last [clears throat]
eight hours to
>> I want to out because no tech right
you're not supposed to say the tech. So
it's like I need to add authentication
authorization and arbback control. I
want to um basically protect both the
control plane. Well actually somebody
else onem I think I think again go codex
doesn't doesn't give a [ __ ] Codex just
went and changed my prompt cuz I didn't
give it that prompt. I gave it a much
simpler prompt and Codex went like
actually the user is doing a lot more
and he's like we have a control plane
which is our grid API and then we have
the data plane which is the terraform
interacting with the terapform state. So
both of them need to be covered by
authorization and I need to expose like
the authentication token to the
terraform process so that it can
actually run the apply. So it's very
interesting. Uh I think I've nailed the
tasks now. I'm pretty sure I can get
this like authentication. Well, I'll be
interested because I think this one
might be one that it might trip on up
on, but uh cool.
>> Hey,
>> I'll let you know. Hey,
>> that was awesome, Vincent. Oh, one more
thing. Just one more thing.
>> So, so I just ran the apply, right? So,
right now it shows that it has conf
consumed and they are clean.
>> Now, what happens when the network
changes? Like that happens all the time,
right? People recreate network.
>> Why did you say clean and and and stale?
I mean, that's doesn't seem like the the
right terminology. I mean, with drift
with drift detection in terraform, it's
they do they say stale and clean? I've
gone
>> I have no idea. I just
>> Okay, you just made them up. Okay,
whatever.
>> Yeah.
>> So, there's a thing here with the
network. For some reason, every time you
apply uh a time stamp forces the VPC to
be recreated.
>> Very convenient.
So at this point this one has changed
and recreated the output. And if I
refresh now we see that the subnets are
the same but the VPCS. Well, this is not
realistic example, right? But that's why
>> it's interesting because it flags um a
typical problem, right?
>> Yes. So this is one of the problems of
the integration registry, right? Where
we're not able to keep track of like who
lost the value. This is actually 100%
open taco because they have an in digest
and an out digest on the edge when the
when you dry these edges. So whenever a
state files get written it keep captures
the outputs and writes out the out
digest and all the other states whenever
they apply they they they um observe the
incoming outputs and they write out
their indigest. So, whenever the
indigest and the out digest differs,
that's when an arrow is no longer um
clean, basically.
>> I don't quite understand, but I'll have
to try it, I guess.
>> Yeah, never mind. Like,
>> okay, so time time out, man. My brain is
about to turn to to mush.
>> That's it. That's it, really. Um
>> thanks, Vincent. And if if anyone got
this far, I I really applaud you. You
>> look I think we're gonna cut this.
I drive for 4 hours to work uh because I
work in London. So I I don't mind long
form content to be honest. It's better
than listening to like hey,
you know, I kind of
>> I think you will look Ah, you mean like
last time when I cut it, it was too
much.
>> No, no, I think I think I think I think
you do what what I would do. You mean
you cut it pretty well for the first
third, but the two the last two/3s you
didn't cut it.
I mean, that was my impression. Maybe
you cut it so well I didn't even notice.
>> Uh, I don't remember. But I do try to.
>> This is two hours of content. It's It's
going to be so hard to cut it. But if
you want to cut it, you do you, Vincent.
>> You don't know me. I I record myself
using Speckit for four hours and I cut
it down into like a 30 minute like to
the interesting section.
>> I do.
>> So you're uploading videos of you using
Speckit already. I have loom I share
with my colleagues or with my friends
and then I see nobody watch it.
>> Come on, [laughter] get a YouTube
channel. Get a YouTube channel.
>> Someone will watch. I don't know who you
are, but thank you.
>> Okay, see you.
>> I don't know how am I going to get this.
Yeah. See you. Have a lunch or whatever.
>> Yeah. Bye. You too. Cheers. Good night.