WEBVTT

NOTE
This file was generated by Descript 

00:00:00.000 --> 00:00:02.830
Phil Sturgeon: Hello everybody
and welcome to another episode of

00:00:03.420 --> 00:00:07.990
APIs You Won't Hate With me, Phil
Sturgeon and no Mike, the co-host.

00:00:08.090 --> 00:00:11.350
So I'm still muddling through trying
to figure out what buttons I meant to

00:00:11.350 --> 00:00:13.629
press, but slowly get in the hang of it.

00:00:14.129 --> 00:00:16.190
And thankfully, I'm joined
today by Lorna Mitchell.

00:00:17.240 --> 00:00:17.700
Say hello,

00:00:17.700 --> 00:00:17.919
Lorna Mitchell: Hi.

00:00:18.410 --> 00:00:18.760
Hello.

00:00:18.810 --> 00:00:19.680
Happy to be here.

00:00:20.450 --> 00:00:20.740
Track 1: Nice.

00:00:20.740 --> 00:00:21.220
How's it going?

00:00:21.300 --> 00:00:22.740
I think you've been on the podcast before.

00:00:22.820 --> 00:00:26.580
I meant to actually look that up back in
the day talking about something or other,

00:00:26.880 --> 00:00:27.460
but if not.

00:00:27.470 --> 00:00:30.070
Lorna Mitchell: I actually don't
think I have, I, I have written

00:00:30.290 --> 00:00:31.870
for APIs you won't hate, and

00:00:31.910 --> 00:00:32.630
I like to write.

00:00:32.870 --> 00:00:33.590
I should do that again.

00:00:34.170 --> 00:00:36.190
I'm not sure we've done
the podcast thing before.

00:00:36.410 --> 00:00:38.850
Track 1: alright, well either way welcome.

00:00:39.590 --> 00:00:43.650
And for folks who dunno who you are, could
you describe a little bit about yourself?

00:00:44.440 --> 00:00:44.730
Lorna Mitchell: Sure.

00:00:44.890 --> 00:00:45.570
I am Lorna.

00:00:45.850 --> 00:00:49.410
I am currently VP of Developer
experience at Redley.

00:00:49.740 --> 00:00:53.780
But my background is I am been a
software engineer for a long time.

00:00:54.360 --> 00:00:55.260
I'm a conference speaker.

00:00:55.640 --> 00:01:00.260
I'm a published author and I am mad
passionate about APIs and open source.

00:01:01.550 --> 00:01:04.650
Track 1: Ha, sorry, I was just doing
some research live on a podcast like

00:01:04.690 --> 00:01:07.460
a real professional . Fantastic.

00:01:07.850 --> 00:01:10.660
Yeah, no, your, your name pops
up everywhere in open API.

00:01:11.000 --> 00:01:16.300
And yeah, you were pretty helpful in the
open API 3.1 stuff when we were trying

00:01:16.300 --> 00:01:17.420
to get all of that across the line.

00:01:17.760 --> 00:01:18.340
And what was it?

00:01:19.145 --> 00:01:20.395
What was the main thing
you were working on?

00:01:20.435 --> 00:01:23.475
I completely forgot because I, my whole
thing was like, Jason Schema needs to

00:01:23.475 --> 00:01:25.435
match open API or what are we even doing?

00:01:25.815 --> 00:01:27.155
But you were working on other bits?

00:01:27.865 --> 00:01:30.675
Lorna Mitchell: Yeah, so for 3.3
0.1, which is when I really came

00:01:30.705 --> 00:01:33.875
into working on open API itself, I
was working on the webhooks thing.

00:01:34.415 --> 00:01:39.475
That's when I was at Vonage and with
their two-way messaging APIs, you need

00:01:39.475 --> 00:01:41.075
webhooks callbacks are not the same.

00:01:41.495 --> 00:01:45.155
So that was I in my not
humble at all opinion.

00:01:45.375 --> 00:01:48.515
One of the best things about
the 3.1 release of open API.

00:01:49.230 --> 00:01:49.550
Track 1: Absolutely.

00:01:49.750 --> 00:01:50.550
I, I forgot that.

00:01:50.550 --> 00:01:52.710
Was that you that helped
push that through and yeah.

00:01:52.710 --> 00:01:56.840
We're using it, using it right
now for some webhook stuff

00:01:56.840 --> 00:01:57.800
that protect Earth's doing.

00:01:57.980 --> 00:01:59.840
So yeah, it, it's really
nice that that's there.

00:02:00.000 --> 00:02:02.520
'cause it was always a bit weird
trying to hack that into callbacks.

00:02:02.520 --> 00:02:03.000
You'd have to like.

00:02:03.760 --> 00:02:07.290
Pretend you'd have to make some
sort of fake URL called like web

00:02:07.290 --> 00:02:10.410
hooks or something, and then just
kind of pretend what it was for.

00:02:10.430 --> 00:02:14.050
But no, this is, it's useful to be
able to say, sometimes there are

00:02:14.050 --> 00:02:16.970
messages that are gonna come from
this server that aren't simply in

00:02:17.170 --> 00:02:18.690
response to a request you just made.

00:02:18.690 --> 00:02:22.010
You can register for a web hook
through the website or whatever.

00:02:22.170 --> 00:02:23.410
I mean, Shopify's super weird.

00:02:23.410 --> 00:02:24.850
We're we're registering for webhooks.

00:02:25.210 --> 00:02:27.890
With them through like a CLA
command, which is awkward.

00:02:28.190 --> 00:02:32.050
But then it will just forever spit
web hooks at us on, on topics that

00:02:32.050 --> 00:02:33.250
aren't related to a single thing.

00:02:33.270 --> 00:02:35.050
So it's really handy
to have that in there.

00:02:35.750 --> 00:02:37.120
Lorna Mitchell: Yeah, I think
there's loads of use cases.

00:02:37.340 --> 00:02:39.560
You know, callbacks gave us half of it.

00:02:39.900 --> 00:02:43.920
You know, it's in response to an
incoming request, but webhooks lets

00:02:43.920 --> 00:02:47.570
you have that payload going across
in response to something else.

00:02:48.650 --> 00:02:48.940
Track 1: Yeah.

00:02:49.340 --> 00:02:49.620
Brilliant.

00:02:50.320 --> 00:02:53.100
And so you've been involved in
loads of stuff with Open api.

00:02:53.100 --> 00:02:55.040
I, and obviously you're working
for Redoc re Dock Lee now.

00:02:55.420 --> 00:02:59.560
But yeah, we, we, we've both been kind
of in the same spaces working on trying

00:02:59.560 --> 00:03:01.840
to make like a sidekick for open API.

00:03:01.840 --> 00:03:02.040
Right.

00:03:02.280 --> 00:03:02.480
I did

00:03:02.480 --> 00:03:04.960
that recent blog post about how
Redoc Lee has kind of got there

00:03:04.980 --> 00:03:08.520
now, but you were around in, in
Specky trying to make that useful.

00:03:09.030 --> 00:03:10.290
And, and spectral.

00:03:10.510 --> 00:03:13.770
And can you just talk a little bit
about those tools and where you feel

00:03:13.770 --> 00:03:17.130
like they fell short and you know, what
they're good at, what they're bad at?

00:03:17.130 --> 00:03:19.970
And then, and then what's
going on with Redoc Lee?

00:03:20.190 --> 00:03:22.250
And its kind of open API psychic now.

00:03:22.950 --> 00:03:27.520
Lorna Mitchell: Yeah, no, I think, I think
there are so many great API tools now, but

00:03:27.630 --> 00:03:32.160
it's not as if they just came out of thin
air now, like they're ready to use now.

00:03:32.490 --> 00:03:35.380
Like you say specky I think was
one of the first ones that at least

00:03:35.580 --> 00:03:40.180
I knew of, which really helped
me to validate and check things.

00:03:40.360 --> 00:03:42.220
I'm not sure I was customizing it a lot.

00:03:42.320 --> 00:03:45.580
And so that can be quite frustrating
if you're using out of the box rules.

00:03:45.960 --> 00:03:49.000
I think too many people do that and
then it can be a hard experience.

00:03:49.755 --> 00:03:50.045
Track 1: Yeah,

00:03:50.125 --> 00:03:53.285
I think specifically I think you
were the person who, well, a lot of

00:03:53.285 --> 00:03:56.565
people really hated all of the default
rules about like tags and stuff.

00:03:56.775 --> 00:03:59.215
But I seem to remember you giving
a bunch of feedback about that.

00:03:59.215 --> 00:04:02.575
Like why is it constantly complaining
that I need to use tags, I don't actually

00:04:02.575 --> 00:04:04.815
need to use tags, and that was just in

00:04:04.815 --> 00:04:05.535
there for some reason.

00:04:05.645 --> 00:04:07.405
Lorna Mitchell: I, I, think it was
an API with like two end points.

00:04:07.485 --> 00:04:09.125
I, I really don't need
to tag them, but thanks.

00:04:09.775 --> 00:04:12.315
And then we used Spectral a lot.

00:04:12.795 --> 00:04:14.195
I realized the other you'll love this.

00:04:14.675 --> 00:04:19.275
I realized the other day that my
personal blog, so that's Lorna

00:04:19.275 --> 00:04:20.395
jane.net will put it in the show notes.

00:04:20.575 --> 00:04:24.315
My personal blog has instructions
of how to link APIs with spectral.

00:04:25.275 --> 00:04:29.255
But it does not have how to link them with
Reduc, CLI, which is, that's what I do

00:04:29.255 --> 00:04:29.455
now.

00:04:29.630 --> 00:04:30.880
Track 1: time for an updated blog post.

00:04:31.000 --> 00:04:31.240
I think

00:04:31.705 --> 00:04:32.375
Lorna Mitchell: definitely.

00:04:32.645 --> 00:04:34.615
Well, and we'll just write
all the blog posts for

00:04:34.615 --> 00:04:36.664
all the tools because I
think they're all great.

00:04:36.724 --> 00:04:40.985
But yeah, I used Spectral and that's
when I started customizing rules.

00:04:41.145 --> 00:04:45.185
I was working for Vonage and what's
interesting about this is I think

00:04:45.224 --> 00:04:50.680
I did Specky when I was working for
Doing like integration consultancy.

00:04:51.240 --> 00:04:53.360
I, I worked on spectral
when I was at Vonage.

00:04:53.360 --> 00:04:57.680
They're an API provider, so that, but
they have a lot of APIs and they're

00:04:57.680 --> 00:04:58.840
quite different from each other.

00:04:59.380 --> 00:05:02.240
So working on spectral there
and making sure that we're

00:05:02.750 --> 00:05:04.280
enforcing that consistency.

00:05:04.340 --> 00:05:07.600
And, you know, I'm not sure developer
experience was a buzzword then,

00:05:08.340 --> 00:05:10.040
but that's how I would call it now.

00:05:11.020 --> 00:05:11.479
In between.

00:05:11.940 --> 00:05:17.379
I worked at a cool, another cool Cloud
SaaS and they had an API and that's when

00:05:17.379 --> 00:05:23.150
I started using Redoc Lee tools because
I really enjoyed their linting and of

00:05:23.150 --> 00:05:25.469
course Redoc API reference documentation.

00:05:26.369 --> 00:05:33.830
So now I'm out redly working on Redoc Lee,
CLI, which as you say is the API sidekick.

00:05:34.049 --> 00:05:38.119
And I think I'm still seeing
some of those same problems like.

00:05:38.730 --> 00:05:41.230
People use the recommended rule
set and then tell us it's wrong.

00:05:41.725 --> 00:05:42.855
it's, you need to cus

00:05:42.934 --> 00:05:43.224
Track 1: Yeah.

00:05:43.224 --> 00:05:43.424
Yeah.

00:05:43.635 --> 00:05:44.775
Lorna Mitchell: 1 0 1 run it.

00:05:44.775 --> 00:05:47.495
We'll give you some good feedback,
you know, and I'm seeing some more

00:05:47.495 --> 00:05:49.855
of those upload your API and we'll
tell you what you've done wrong.

00:05:50.284 --> 00:05:53.615
Like Yeah, but every API is
different, so you need to customize

00:05:53.615 --> 00:05:55.935
your rule set and use it yourself.

00:05:56.635 --> 00:05:59.455
So Redly CLI is open source.

00:05:59.835 --> 00:06:03.615
It does do the linting, but it does a
couple of things that I would describe

00:06:03.615 --> 00:06:06.125
as Either side of that in the process.

00:06:07.025 --> 00:06:14.534
One is it has functionality for
splitting your open API up into multiple

00:06:14.534 --> 00:06:18.385
files so you don't have to deal with
a hundred thousand lines of diff.

00:06:19.034 --> 00:06:22.174
You can, and also you can look at
like, which segments changed and

00:06:22.174 --> 00:06:23.655
that can be easier for review.

00:06:24.354 --> 00:06:25.804
It's also easier on your editor.

00:06:26.504 --> 00:06:27.484
And then you

00:06:27.484 --> 00:06:27.684
can

00:06:27.835 --> 00:06:30.955
Track 1: yeah, whenever you are trying to
like send a pull request on a file that's

00:06:31.455 --> 00:06:35.434
10,000 lines long, firstly it's just not
gonna show you the preview half the time.

00:06:35.694 --> 00:06:37.815
And secondly, it's more,
more likely to conflict.

00:06:38.015 --> 00:06:40.174
'cause two people worked on something
completely different, but it

00:06:40.174 --> 00:06:42.335
didn't realize it was completely
different and therefore, but,

00:06:42.875 --> 00:06:44.005
Lorna Mitchell: Yeah, and it's harder

00:06:44.005 --> 00:06:46.045
to reason about which
sections should have changed

00:06:46.635 --> 00:06:47.885
when it's just one long thing.

00:06:48.725 --> 00:06:51.245
Track 1: I think before, before
we go past it too quickly.

00:06:51.405 --> 00:06:54.205
I think one of the most impressive
things, so when I was doing the

00:06:54.205 --> 00:06:57.105
review of re doley I was like, okay,
yeah, I know what this is about.

00:06:57.105 --> 00:06:59.425
They got like a liny thing and
they got like a Bundy thing and

00:06:59.425 --> 00:07:00.745
they got like a preview docs.

00:07:00.745 --> 00:07:02.625
These are all good,
these aren't new things.

00:07:02.625 --> 00:07:05.825
They've been kind of brought together
in a, in, in one new tool that does a

00:07:05.825 --> 00:07:06.705
whole bunch of things, which is great.

00:07:07.420 --> 00:07:11.680
But what I was really, really excited
about discovering was the split thing.

00:07:12.080 --> 00:07:14.360
'cause the number of times, like
I'm looking at some massive open

00:07:14.480 --> 00:07:18.240
API file going, ugh, like it's been
generated from HCTP or whatever.

00:07:18.610 --> 00:07:21.135
You're kinda like just, you're just
staring at that massive far going.

00:07:21.205 --> 00:07:22.375
This is gonna take some time.

00:07:22.875 --> 00:07:26.575
And I think like stoplight studio at
some point had vaped some functionality

00:07:26.635 --> 00:07:27.975
in like, move this to a model.

00:07:28.315 --> 00:07:31.895
But then the button broke and it was
disabled, and I begged and begged and

00:07:31.895 --> 00:07:34.135
begged to get that button put back
in and they were, oh, we're too busy.

00:07:34.255 --> 00:07:38.175
I was like, no, because taking a,
taking a giant opiate open, API file.

00:07:38.410 --> 00:07:40.580
Like, I feel like no one's
doing enough refactoring,

00:07:40.990 --> 00:07:44.380
automating, refactoring, like
move this to move this to models.

00:07:44.469 --> 00:07:47.469
These two, these two in
place things look the same.

00:07:47.759 --> 00:07:48.879
Change that to one ref.

00:07:48.939 --> 00:07:51.159
And I think, you know, split,
split does a lot of that.

00:07:51.159 --> 00:07:54.159
They, they noticed that you've got
refs and they were like bung 'em off

00:07:54.159 --> 00:07:57.359
into files and it did also notice
that two things were the same thing

00:07:57.699 --> 00:07:58.999
and put them into the same file.

00:07:59.019 --> 00:08:00.519
And I was like, God damn, that's useful.

00:08:00.939 --> 00:08:03.199
So I was really glad to see
that even though it's like a,

00:08:03.399 --> 00:08:05.279
a undersung kind of feature.

00:08:05.429 --> 00:08:05.719
Yeah.

00:08:06.379 --> 00:08:06.799
Lorna Mitchell: it is.

00:08:06.939 --> 00:08:12.469
But I think it does really help, and
particularly As we mature in our API

00:08:12.749 --> 00:08:16.829
practice, it's not just about, I wrote
an open API file or I generated one.

00:08:16.829 --> 00:08:17.309
There you go.

00:08:17.999 --> 00:08:22.809
I've done that tick You know, those
are living, changing documents and so

00:08:22.809 --> 00:08:24.489
the maintenance aspect gets quite big.

00:08:24.989 --> 00:08:30.049
So yeah, the, I think the, the splitting
bundling and we also have join, so where

00:08:30.129 --> 00:08:31.809
people are maintaining different, every

00:08:31.809 --> 00:08:36.449
team maintains an API each, but
you publish it as a single surface

00:08:37.269 --> 00:08:38.449
that's actually really messy.

00:08:38.519 --> 00:08:39.889
I've seen some horrible merge.

00:08:40.574 --> 00:08:41.694
Attempts and

00:08:41.694 --> 00:08:44.694
join attempts to handle that,
which I think is really nice.

00:08:44.694 --> 00:08:48.924
So from an API management point of view,
the other thing that I love about Reduc,

00:08:49.124 --> 00:08:56.084
CLI, which I am now seeing in other
places, but Reduc CLI has had it for a

00:08:56.084 --> 00:08:58.804
long time, is decorators the ability to

00:08:59.174 --> 00:09:01.684
repeatably transform something.

00:09:02.979 --> 00:09:07.179
an open API document so you get
something it's not perfect or

00:09:07.179 --> 00:09:10.339
you want to add something for
the next stage in your pipeline.

00:09:10.950 --> 00:09:12.630
There's a decorator's set.

00:09:12.630 --> 00:09:16.230
There are some built-in decorators,
but you can also extend it by saying

00:09:16.590 --> 00:09:22.150
whenever you see a, I dunno, an
an operation parameter, do this.

00:09:23.550 --> 00:09:23.790
Track 1: Interesting.

00:09:23.820 --> 00:09:24.750
Like, like what?

00:09:24.940 --> 00:09:27.390
Make it more tangible
for my struggling brain,

00:09:28.245 --> 00:09:30.505
Lorna Mitchell: So we do things
like you can add, you can

00:09:30.505 --> 00:09:31.545
replace all the descriptions.

00:09:31.975 --> 00:09:34.025
This, this operation Id
should have this description.

00:09:34.025 --> 00:09:35.265
This one should have this description.

00:09:35.485 --> 00:09:35.825
So if

00:09:35.825 --> 00:09:41.255
you're getting poor quality generated
content or you wanna add, you know,

00:09:41.314 --> 00:09:46.214
the descriptions in open API support
markdown, so you can add really

00:09:46.214 --> 00:09:48.535
beautiful, rich links and whatever.

00:09:49.035 --> 00:09:51.415
Do you want to maintain
that in your source code?

00:09:51.964 --> 00:09:54.814
When you are generating
from that, you know,

00:09:54.895 --> 00:09:55.555
Track 1: Oh, I see.

00:09:56.064 --> 00:09:56.354
Yeah.

00:09:57.034 --> 00:10:01.055
Lorna Mitchell: you are maintaining the
YAML for the markdown in your source code.

00:10:01.294 --> 00:10:04.214
I just, I do understand why
people don't enjoy that.

00:10:05.094 --> 00:10:05.374
Track 1: Absolutely.

00:10:05.374 --> 00:10:05.614
Yeah.

00:10:05.734 --> 00:10:11.694
I think it's the, the people that advocate
most for the kind of code first B it all

00:10:11.694 --> 00:10:17.134
into annotations in our code approach are
the people who aren't ever gonna put very

00:10:17.134 --> 00:10:18.775
much effort into their documentation.

00:10:18.775 --> 00:10:23.555
And therefore you know, you're not, you're
not gonna see these like . Hundred lines

00:10:23.555 --> 00:10:27.514
of markdown showing up in the source
code purely because they wouldn't bother

00:10:27.514 --> 00:10:30.754
to write it and the tech writers can't
be faf to go and like get in there.

00:10:31.199 --> 00:10:31.419
Um,

00:10:31.774 --> 00:10:32.854
Lorna Mitchell: Not even have access.

00:10:33.474 --> 00:10:34.374
That's really common.

00:10:34.434 --> 00:10:38.174
You get frustrated tech writers
who could add really great,

00:10:38.474 --> 00:10:39.694
you know, descriptive content.

00:10:39.884 --> 00:10:40.814
Example values.

00:10:41.424 --> 00:10:44.324
If it's generated from source code
and not, and they're not giving

00:10:44.344 --> 00:10:47.044
access to the source code, it's
very difficult to include that.

00:10:47.584 --> 00:10:49.244
And we're starting to see tools as well.

00:10:49.244 --> 00:10:53.444
Obviously the documentation tools,
Redoc and friends are the very good

00:10:53.524 --> 00:10:55.124
API Documentation tools are available.

00:10:57.144 --> 00:10:58.144
Track 1: Standard BBC response.

00:10:58.214 --> 00:10:58.504
Yeah.

00:10:58.714 --> 00:11:01.524
Lorna Mitchell: Well, I just feel like, I
don't mind which one you use, but please

00:11:01.524 --> 00:11:03.124
give me some documentation, you know,

00:11:03.155 --> 00:11:03.444
Track 1: Yeah.

00:11:03.474 --> 00:11:03.764
Yeah.

00:11:03.834 --> 00:11:05.854
Lorna Mitchell: And the
SDK generators as well.

00:11:05.914 --> 00:11:09.859
You know, we've just seen speakeasy
release the overlays tool, Because

00:11:10.029 --> 00:11:14.539
their tool does better with some
added metadata and you don't wanna

00:11:14.819 --> 00:11:17.979
maintain that in wherever
upstream your open API.

00:11:17.979 --> 00:11:18.939
Things are coming from.

00:11:19.704 --> 00:11:20.054
Track 1: Great.

00:11:20.124 --> 00:11:21.174
Well that brings us on nicely.

00:11:21.194 --> 00:11:23.374
So I've been meaning to pick
your brain about overlays a bit

00:11:23.574 --> 00:11:27.294
'cause it's, it's something that
there's increasing interest in.

00:11:27.374 --> 00:11:30.254
I mean, I, I work with the, the folks
at Bump as well, and they were asking

00:11:30.264 --> 00:11:33.674
about, about a bit more about overlays
and there's a lot of people in the

00:11:33.674 --> 00:11:36.754
docs space who were interested in that
idea for exactly what you're saying.

00:11:36.824 --> 00:11:41.154
Like, if you know the, the code
first, people dump out some open API.

00:11:41.389 --> 00:11:42.729
And it's whatever it is.

00:11:42.829 --> 00:11:46.049
And if you edit it, then it's just, you
know, gone the next time they dump it

00:11:46.049 --> 00:11:46.249
out.

00:11:46.629 --> 00:11:49.769
Or you've got the people that are design
first where the, the YAML is the source

00:11:49.769 --> 00:11:53.329
of truth and they do all their edits and,
and that's that, and that's probably a

00:11:53.329 --> 00:11:54.889
little bit easier to add things into.

00:11:55.109 --> 00:11:59.559
But then maybe you are trying to expand
somebody else's published design first.

00:11:59.559 --> 00:12:01.159
Stuff that you don't
have any control over.

00:12:01.259 --> 00:12:06.779
So there's this kind of constant
idea of taking . Some open API and

00:12:06.779 --> 00:12:10.179
then like programmatically adding
stuff to it for whatever reason.

00:12:10.249 --> 00:12:13.379
Tech writing, you could do translation,
you could add a bunch of stuff in.

00:12:13.749 --> 00:12:15.839
I've, I've seen your name
come up for quite a few blog

00:12:15.839 --> 00:12:17.199
posts and overlay overlays.

00:12:17.499 --> 00:12:19.839
And while I was doing some research,
I noticed the folks over at Redoc

00:12:19.839 --> 00:12:21.079
aren't quite so impressed with it.

00:12:21.099 --> 00:12:23.719
So I was wondering if you could
explain where it all sits.

00:12:24.149 --> 00:12:24.999
Lorna Mitchell: controversial?

00:12:25.469 --> 00:12:25.759
Yeah.

00:12:25.879 --> 00:12:26.359
I think so.

00:12:26.359 --> 00:12:32.549
There's an older blog post on the
Redoc website where Adam, you know,

00:12:33.914 --> 00:12:35.694
It didn't love it when he saw it.

00:12:35.694 --> 00:12:38.854
It's, it's not a brand fresh site,
but it is top hit for overlay.

00:12:38.874 --> 00:12:39.374
So it's

00:12:39.374 --> 00:12:44.744
not a secret And I think the point
there is a good one, that it's

00:12:44.764 --> 00:12:46.944
yet another complex structure.

00:12:47.034 --> 00:12:50.264
We've got a specification
with no tooling at all, and it

00:12:50.344 --> 00:12:51.984
requires use of JSO path.

00:12:52.684 --> 00:12:58.984
Now, if you've been using Spectral,
that is very JSON path heavy.

00:12:59.749 --> 00:13:00.039
Track 1: Yeah.

00:13:00.534 --> 00:13:06.794
Lorna Mitchell: But v Doley, CLI
isn't, we do that by considering

00:13:06.794 --> 00:13:10.514
the open API as like a tree
structure and the different data

00:13:10.514 --> 00:13:10.794
types.

00:13:10.794 --> 00:13:12.554
So everything's very type aware.

00:13:13.134 --> 00:13:17.324
And you can filter on fields and it
knows, oh, this is a parameter you know,

00:13:17.324 --> 00:13:23.354
it'll have an in then We don't, with JSON
path, it's just blind data structure.

00:13:24.014 --> 00:13:27.674
So we don't have JSON path
currently in the Marine Dole CLI

00:13:27.674 --> 00:13:29.354
ecosystem I don't think at all.

00:13:30.174 --> 00:13:33.314
And so that extra learning
curve, you sort of think, well,

00:13:33.434 --> 00:13:34.714
I don't know who could use this.

00:13:34.714 --> 00:13:40.114
Like it's a good solution, but
there's no validator for the format.

00:13:40.534 --> 00:13:44.314
And the learning curve puts it
beyond a lot of the users that

00:13:44.614 --> 00:13:46.234
at re doley we're trying to enable.

00:13:47.139 --> 00:13:47.489
Track 1: Right.

00:13:47.669 --> 00:13:50.529
And so I think when we are talking
about the use cases for decorators, like

00:13:50.609 --> 00:13:55.519
overlays kind of intended to be a more
generic implementation of that, that

00:13:55.539 --> 00:13:57.919
anyone could theoretically
use, whereas decorators is

00:13:57.919 --> 00:13:59.279
more of a like redly feature.

00:13:59.729 --> 00:14:02.429
And could theoretically be, you
know, ji to, to be the same thing.

00:14:02.489 --> 00:14:04.269
But what, what you're saying is yeah, the.

00:14:05.564 --> 00:14:06.074
right now.

00:14:06.354 --> 00:14:10.234
Overlays are designed to use JSON
Path and for anyone who's not

00:14:10.514 --> 00:14:14.074
familiar if you've been using Spectral
yet, then yeah, that's, that's the

00:14:14.434 --> 00:14:16.394
absolutely batshit bunch of things.

00:14:16.394 --> 00:14:18.954
You're typing into those rules to
try and make anything, make work.

00:14:19.374 --> 00:14:19.864
Make work.

00:14:19.924 --> 00:14:20.944
You can tell I'm tired.

00:14:22.279 --> 00:14:25.199
I was saying before the show, I've just
come back from API days and, and normally

00:14:25.439 --> 00:14:28.719
API days gets you a hangover, but this
time I've just been like sick for a couple

00:14:28.719 --> 00:14:30.799
of days and now I've just not slept.

00:14:31.319 --> 00:14:34.979
I decided to go and get myself into a
hotel room early and then like got into

00:14:34.979 --> 00:14:37.499
bed at eight o'clock and there were
just like homeless people screaming

00:14:37.499 --> 00:14:41.099
outside my window until 4:00 AM and
then the fire alarm went off at 8:00

00:14:41.099 --> 00:14:43.539
AM and I'm like, what is reality?

00:14:44.189 --> 00:14:47.959
So, yeah, JSON Path is even more
confusing than my brain right now.

00:14:48.019 --> 00:14:50.959
And basically you have to kind of tell
it what you would like to filter through,

00:14:50.959 --> 00:14:54.279
kind like a CSS selector but for js.

00:14:54.739 --> 00:14:56.919
And then, so JSON Path
doesn't have a standard.

00:14:57.399 --> 00:14:59.764
They're kind of working on
one, but it's not there yet.

00:15:00.304 --> 00:15:03.964
And so much like what markdown
had, like markdown plus and a

00:15:03.964 --> 00:15:05.244
million different markdown flavors.

00:15:05.624 --> 00:15:10.074
JSON path now has JSON path plus, which
stoplight was using for quite a long

00:15:10.074 --> 00:15:11.794
time and, and used as the main thing for.

00:15:12.714 --> 00:15:15.334
For spectral rules, but then
that wasn't quite enough.

00:15:15.634 --> 00:15:20.664
And then like Nier appeared, which is
Jason Path Plus with some other bits

00:15:21.004 --> 00:15:26.544
and like it's even Jason Path Plus
not Nier is a mixture of a lot of just

00:15:26.624 --> 00:15:27.944
squiggles and doodles and back ticks.

00:15:28.619 --> 00:15:30.759
But also you can bung
red rejects in there.

00:15:31.099 --> 00:15:34.559
So you can kind of say, I would like
to dot gets you into the property of

00:15:34.559 --> 00:15:38.839
something and then square brackets can get
you into like the array of, of something.

00:15:39.059 --> 00:15:40.919
And then there's like
stars to say all of them.

00:15:40.979 --> 00:15:45.639
And there's tilts to say, parent,
and you can kind of fetch all of the

00:15:45.819 --> 00:15:52.029
headers where the parent is on this
and the, the name begins with an X

00:15:52.409 --> 00:15:53.829
and you can do really powerful things.

00:15:54.089 --> 00:16:01.359
But it's . Almost impossible in any
sort of . I've made lots of spectral

00:16:01.359 --> 00:16:06.399
rule sets because I built an NPM rule
set and, and I built an NPM test suite

00:16:06.729 --> 00:16:10.719
using jest so that I can type in these
crazy things and go, am I close yet?

00:16:10.719 --> 00:16:11.319
Am I close yet?

00:16:11.319 --> 00:16:11.959
Am I close yet?

00:16:12.099 --> 00:16:13.759
And the result will
show me what I've done.

00:16:14.339 --> 00:16:16.319
But most people are just
writing a YAML file.

00:16:17.174 --> 00:16:18.674
And, and that doesn't work.

00:16:18.734 --> 00:16:21.554
So you have to like, literally switch
over to your terminal, run it, and it

00:16:21.554 --> 00:16:22.874
just blows up at you in strange ways.

00:16:22.934 --> 00:16:24.594
And it, it can be very hard to do.

00:16:24.694 --> 00:16:28.494
So it's one of the things I really
appreciated about about Redoc Redoc

00:16:28.594 --> 00:16:34.214
Lee, CLI was the, was the switch
to using just named selectors.

00:16:34.354 --> 00:16:35.214
So you can say like.

00:16:35.874 --> 00:16:40.294
Header instead of going like,
you know and I think spectral iss

00:16:40.514 --> 00:16:44.774
trying it, it made early attempt
to fix that by adding aliases.

00:16:45.074 --> 00:16:47.014
But I'm just going, going
off on a bit of a tirade now.

00:16:47.014 --> 00:16:47.374
I've gotta get

00:16:47.374 --> 00:16:48.094
some stuff off my chest.

00:16:49.004 --> 00:16:49.594
Lorna Mitchell: Carry on.

00:16:50.424 --> 00:16:53.044
Track 1: The roadmap for aliases
was powerful and impressive, and

00:16:53.044 --> 00:16:56.084
I've smoked to Smart Bear who have
now inherited this to try and get

00:16:56.084 --> 00:16:56.884
this back on the table.

00:16:57.464 --> 00:17:01.094
But basically aliases, the idea was
let's come up with a list of aliases.

00:17:01.094 --> 00:17:05.334
Common open, API, aliases common
A and KPI, aliases, and then

00:17:05.434 --> 00:17:06.854
people can use those instead.

00:17:07.074 --> 00:17:08.014
So instead of dollar.

00:17:09.064 --> 00:17:14.414
Which is root and then paths, brackets
slash post you, you would just say

00:17:14.414 --> 00:17:18.294
like you would just say paths and then
you could do the square bracket slash

00:17:18.294 --> 00:17:19.734
post to pull out all the post ones.

00:17:19.734 --> 00:17:23.574
So you would cut out a lot of the
nonsense by using aliases to replace

00:17:23.694 --> 00:17:28.354
a certain chunk of of the path.

00:17:28.354 --> 00:17:32.314
Whereas I think Redley would've said,
you know, paths and then you would have.

00:17:33.425 --> 00:17:35.314
Header if, if, if post
or something, right?

00:17:35.314 --> 00:17:38.794
So yours is more of a DSL approach, but
aliases seemed like a good step forward.

00:17:39.415 --> 00:17:47.095
And yeah, the, the aliases ended up
getting defined in the core rule set

00:17:47.514 --> 00:17:49.534
of like the core open API rule set.

00:17:49.995 --> 00:17:52.324
And they weren't extendable.

00:17:52.384 --> 00:17:55.004
So if you extend the core
open API rule set, you can.

00:17:55.554 --> 00:17:58.495
Get those aliases out, they're
only available inside the place.

00:17:58.495 --> 00:17:59.054
They're defined.

00:17:59.314 --> 00:18:01.654
So that meant you couldn't
actually use those to help.

00:18:01.654 --> 00:18:04.975
Like no one using, no one writing
their own rule sets, extending open

00:18:05.054 --> 00:18:08.094
API or no one writing their own rule
sets at all, could use those aliases

00:18:08.094 --> 00:18:09.215
unless you copy and paste them.

00:18:09.394 --> 00:18:13.414
And so I'm, I've been suggesting that like
not only should they be extendable, but

00:18:13.564 --> 00:18:15.374
they should be defined in like the format.

00:18:15.914 --> 00:18:18.254
So you should, you know, anyone
using the open API format.

00:18:19.100 --> 00:18:22.269
Whether it's the core rule set or
not, you should get those aliases.

00:18:22.370 --> 00:18:25.310
But that's, that's a bit
more of a, like a, a roadmap.

00:18:25.370 --> 00:18:27.790
One day they might fix
it kind of thing, but

00:18:28.149 --> 00:18:28.270
I,

00:18:28.270 --> 00:18:31.110
completely recognize the need
to not Jason path and therefore

00:18:31.280 --> 00:18:32.909
avoid that entirely in overlays.

00:18:32.909 --> 00:18:32.990
Right.

00:18:33.575 --> 00:18:33.865
Lorna Mitchell: yeah.

00:18:34.095 --> 00:18:36.544
Well, I don't think it
is avoidable in overlays.

00:18:36.965 --> 00:18:40.225
And I feel a little bit like
I've done it, an injustice there.

00:18:40.225 --> 00:18:44.185
Like leading with that, leading with that
negative, the controversial blog post.

00:18:44.245 --> 00:18:45.424
You know, not everyone's a fan.

00:18:46.344 --> 00:18:48.344
I really think that overlays.

00:18:49.199 --> 00:18:50.779
Solves a real problem.

00:18:51.169 --> 00:18:54.979
Like I see this all the time we just
talked about when it's generated from

00:18:55.009 --> 00:18:57.659
code and it hasn't got enough anything.

00:18:58.199 --> 00:19:00.860
I'm also seeing much
more complex pipelines.

00:19:00.959 --> 00:19:01.179
Now.

00:19:01.799 --> 00:19:05.779
People have multiple teams maintaining
different bits of the a p surface.

00:19:06.409 --> 00:19:08.340
They all ship an open API.

00:19:08.879 --> 00:19:14.100
We join it into one, and then the,
the downstream outputs, whether

00:19:14.100 --> 00:19:17.819
that's documentation, SDK, generation
API, gateways, like whatever.

00:19:19.119 --> 00:19:24.699
All of them need their own enrichment and
overlays solves that problem where you

00:19:24.699 --> 00:19:30.259
don't have to, you can just, yeah, add
a translation, add an example, add the

00:19:30.259 --> 00:19:35.379
hint for the correct data type for the
target language in the SDK and the team

00:19:35.379 --> 00:19:37.259
that deals with the SDKs can do that.

00:19:37.259 --> 00:19:42.139
We don't have to go all the way back in
a, in a, in a big organization that's hard

00:19:42.679 --> 00:19:43.259
to find.

00:19:43.279 --> 00:19:44.939
The team that maintains the thing.

00:19:45.644 --> 00:19:46.374
That lives in the house.

00:19:46.429 --> 00:19:47.329
The Jack bill, right?

00:19:47.869 --> 00:19:51.369
So ,we, we can do that here.

00:19:51.569 --> 00:19:53.289
Overlays solves that problem.

00:19:53.969 --> 00:19:59.329
I don't think it's a coincidence that
one of the implementations, there are

00:19:59.329 --> 00:20:00.969
not many overlays, implementations.

00:20:01.269 --> 00:20:02.289
One of them is mine.

00:20:02.429 --> 00:20:03.409
We can link to it.

00:20:03.519 --> 00:20:04.689
It's very hobby.

00:20:05.449 --> 00:20:07.689
I just, I, this is how I
get things out of my brain.

00:20:07.889 --> 00:20:10.729
I had to write code that did
it so that I could look at

00:20:10.729 --> 00:20:10.889
it.

00:20:11.629 --> 00:20:12.070
I need to

00:20:12.070 --> 00:20:12.230
do

00:20:12.370 --> 00:20:12.850
Track 1: that's really helpful.

00:20:13.170 --> 00:20:16.480
I, I remember, I remember
reading the, the official page

00:20:16.480 --> 00:20:17.800
of the overlays working group.

00:20:18.300 --> 00:20:19.950
And oh, just a quick
thing on working groups.

00:20:20.000 --> 00:20:24.520
So open API used to do everything
by everyone getting on a weekly call

00:20:24.540 --> 00:20:27.600
and then getting homework assigned,
and then like, maybe it was done

00:20:27.600 --> 00:20:28.880
by the next weekly call, but that

00:20:28.880 --> 00:20:30.000
was how everything ever happened.

00:20:30.260 --> 00:20:32.680
And if there wasn't enough
interest in certain things,

00:20:32.680 --> 00:20:33.680
then they just wouldn't happen.

00:20:33.820 --> 00:20:37.680
But now things have been split up into
working groups and I think one of them

00:20:37.700 --> 00:20:41.140
was like workflows that I was . Briefly
involved with, it's quite exciting.

00:20:41.680 --> 00:20:45.670
And there's a bunch of other
ones and SLAs and, and yeah, so

00:20:45.670 --> 00:20:46.950
overlays was, was one of them.

00:20:46.970 --> 00:20:51.400
And it's great to see an early kind of
finished I don't know what phases and

00:20:51.400 --> 00:20:55.360
stages there are, but I read the repo
and it said like, we're basically stable.

00:20:56.230 --> 00:20:59.450
Now but no one's really implemented
this, so can, you know, we need some

00:20:59.450 --> 00:21:00.930
big implementations to go and do it.

00:21:00.930 --> 00:21:03.570
And, and it's cool to hear
there's some hobbyist ones or

00:21:03.570 --> 00:21:04.650
some implementations out there,

00:21:04.670 --> 00:21:05.930
but that, that's the hard part.

00:21:05.930 --> 00:21:07.010
We had this problem at stoplight.

00:21:07.290 --> 00:21:11.730
Everyone has this problem where you
want to support a feature, but you

00:21:11.730 --> 00:21:14.650
get a few user requests come in saying
like, could you use this feature?

00:21:14.700 --> 00:21:15.170
Could we.

00:21:15.530 --> 00:21:16.400
Could we have this feature?

00:21:16.515 --> 00:21:18.775
And then you're like, oh, I'm
not sure we should implement

00:21:18.775 --> 00:21:20.295
it because it's not stable yet.

00:21:20.315 --> 00:21:23.175
And the people who have like come up
with it have said, well, we'll only

00:21:23.175 --> 00:21:26.055
call it version one when it's had
some implementation and some feedback.

00:21:26.055 --> 00:21:29.255
So you get in this chicken and egg
problem of everyone hoping somebody else

00:21:29.645 --> 00:21:32.215
will implement it, so
that then it stabilizes.

00:21:32.475 --> 00:21:35.935
But then if they're the first to market,
then you lose out, but you're not

00:21:36.375 --> 00:21:37.775
prepared to commit the resources to it.

00:21:37.835 --> 00:21:38.055
So

00:21:38.395 --> 00:21:39.215
So where are we at

00:21:39.570 --> 00:21:40.100
Lorna Mitchell: Good news.

00:21:40.460 --> 00:21:43.900
I have a hobbyist thing and I think
Mike Sson has something as well.

00:21:43.960 --> 00:21:45.100
He donated me a

00:21:45.140 --> 00:21:45.380
Tests.

00:21:45.600 --> 00:21:46.020
Mine's

00:21:46.020 --> 00:21:46.140
open

00:21:46.320 --> 00:21:48.080
Track 1: course Mike does brilliant

00:21:48.100 --> 00:21:48.260
Lorna Mitchell: does.

00:21:48.490 --> 00:21:50.460
It's like he's got his
finger on the pulse.

00:21:50.920 --> 00:21:54.380
But there's another implementation,
which is from speakeasy.

00:21:54.680 --> 00:21:58.260
Now they do call modern SDKs.

00:21:58.480 --> 00:22:02.380
It is not a coincidence that
it is them that have gone to

00:22:02.380 --> 00:22:03.740
implement with overlays because.

00:22:04.370 --> 00:22:09.460
Open API does not have all of the
metadata that you need to generate

00:22:09.620 --> 00:22:11.220
a great SDK in every tech stack.

00:22:11.490 --> 00:22:15.660
Some of them need more data type
instructions or serialization

00:22:15.660 --> 00:22:19.780
information, or, you know, there's a
lot that you need to add that wouldn't

00:22:19.780 --> 00:22:21.980
be in a standard open API description.

00:22:23.285 --> 00:22:27.675
So they have these extra extensions,
the x dash fields that they add.

00:22:28.575 --> 00:22:32.275
And rather than everyone, like you say,
you can't add them because then when

00:22:32.275 --> 00:22:34.635
you update your open API, they are lost.

00:22:34.975 --> 00:22:37.555
So not a coincidence that
they implemented overlays.

00:22:37.725 --> 00:22:43.315
Their tool is available, it's open
source, it includes a validator.

00:22:44.430 --> 00:22:48.080
Kind of embrace and extended the, the
implementation a little bit, but I think

00:22:48.080 --> 00:22:49.680
that's an interesting use case too.

00:22:50.580 --> 00:22:51.280
So yeah.

00:22:51.710 --> 00:22:53.000
More than one tool to look at.

00:22:53.100 --> 00:22:53.920
And I'm

00:22:53.920 --> 00:22:56.360
excited because I think it, it
really solves a real problem.

00:22:57.130 --> 00:22:57.900
Track 1: That is really cool.

00:22:58.000 --> 00:23:01.460
And once again, I'm googling mid podcast
'cause I am extremely professional.

00:23:01.480 --> 00:23:03.640
But I'm looking at the speakeasy dev.

00:23:03.720 --> 00:23:06.500
I'm just seeing AI powered
end-to-end API maintenance.

00:23:06.680 --> 00:23:08.580
And again, there's like,
I've just come from API days.

00:23:08.580 --> 00:23:12.420
Every other talk was about AI and I
just, you know, my, my eyes are in

00:23:12.420 --> 00:23:16.000
pain from rolling, but this looks like
a, a really useful implementation.

00:23:16.000 --> 00:23:19.010
They're like . They've noticed that
you've type that they've noticed that

00:23:19.010 --> 00:23:20.830
you've typed in a duplicate schema and

00:23:20.830 --> 00:23:23.870
then just like changed it
to a ref , which is amazing.

00:23:24.330 --> 00:23:28.230
And there's a lot of other pretty cool
looking stuff on this marketing page.

00:23:28.320 --> 00:23:31.280
Let's, let's be clear, but
I like their intentions.

00:23:32.010 --> 00:23:32.300
Lorna Mitchell: Yeah.

00:23:32.600 --> 00:23:33.140
And I think

00:23:33.160 --> 00:23:33.680
Track 1: dig in more.

00:23:34.040 --> 00:23:36.580
Lorna Mitchell: I'm with you
in in team Rolling your eyes.

00:23:36.990 --> 00:23:38.080
When it comes to Yeah.

00:23:38.373 --> 00:23:40.033
AI is gonna do everything but

00:23:40.353 --> 00:23:46.233
actually . The open API, that standard
machine readable specification is gonna

00:23:46.233 --> 00:23:48.313
enable a bunch of AI applications.

00:23:49.133 --> 00:23:54.513
So, and also chat GT four knows
quite a lot of open API and can

00:23:54.513 --> 00:23:57.393
like quickly give you, quickly
give you back some hilarious

00:23:57.573 --> 00:23:59.353
and sensible example fields.

00:23:59.493 --> 00:24:01.233
For example, I wouldn't let it write

00:24:01.233 --> 00:24:02.473
my API, but when I'm

00:24:02.473 --> 00:24:05.033
working on examples, it's
like, ah, this could be better.

00:24:05.343 --> 00:24:05.633
Like,

00:24:05.633 --> 00:24:07.993
make me, make me something
fun with circus animals.

00:24:08.133 --> 00:24:08.713
It can do that.

00:24:09.918 --> 00:24:10.198
Track 1: Brilliant.

00:24:10.228 --> 00:24:10.518
Okay.

00:24:10.518 --> 00:24:10.718
Yeah.

00:24:10.838 --> 00:24:13.918
'cause writing, you know, arbitrary
examples was always the hardest part.

00:24:14.038 --> 00:24:17.478
I would always really struggle
to do tutorials or demos 'cause

00:24:17.478 --> 00:24:21.638
I was like, just coming up with
contrived examples is so frustrating.

00:24:21.658 --> 00:24:24.078
And like, everyone's got a bloody
to-do app and no one cares.

00:24:24.218 --> 00:24:28.348
And, and just, I, I fundamentally refuse
to use the pet store for anything ever

00:24:28.798 --> 00:24:29.018
So,

00:24:29.018 --> 00:24:29.898
yeah, I, I have

00:24:29.963 --> 00:24:32.663
Lorna Mitchell: we can share a link
to Redley just published a museum,

00:24:32.783 --> 00:24:34.103
API for more or less these reasons.

00:24:34.453 --> 00:24:34.983
Also, the

00:24:34.983 --> 00:24:36.263
pet store's really outdated.

00:24:36.813 --> 00:24:40.943
SmartBear only just gone to 3.1,
so we've been using a variation of

00:24:40.943 --> 00:24:43.783
this museum thing internally and
we were like, we should ship this.

00:24:44.538 --> 00:24:44.888
Track 1: right?

00:24:45.078 --> 00:24:51.008
Well, So I mean, , the, what really annoys
me about the pet store is that it's a.

00:24:52.193 --> 00:24:52.413
Bad.

00:24:52.453 --> 00:24:54.213
API like it's describing a bad API.

00:24:54.213 --> 00:24:56.573
It's got like a bunch of really
bad conventions in the actual

00:24:56.613 --> 00:24:57.693
API that it's describing.

00:24:58.113 --> 00:25:02.813
it it uses a weird amount of, it uses like
a, an odd amount of open API to do it.

00:25:02.893 --> 00:25:05.253
I think it's being copied
from like swagger two and, and

00:25:05.353 --> 00:25:06.653
not being fleshed out.

00:25:07.073 --> 00:25:10.293
And then, so now the pet store
lives in open API three when

00:25:10.363 --> 00:25:14.933
like 3.1 came out, 20 20, 20 21.

00:25:15.318 --> 00:25:15.818
Lorna Mitchell: 2021.

00:25:15.838 --> 00:25:17.538
By the time we press the button, yeah.

00:25:17.668 --> 00:25:21.278
Track 1: Yeah, so that's, you know,
two, it's nearly, yeah, it's a while.

00:25:22.018 --> 00:25:23.558
So don't use the pet store.

00:25:23.888 --> 00:25:26.848
There's other better examples and I like
that AI can help with that for sure.

00:25:27.088 --> 00:25:32.528
I mean, I have been using copilot
built into VS code and it's been

00:25:32.528 --> 00:25:33.888
helping me out for the protector.

00:25:34.008 --> 00:25:34.728
API quite a lot.

00:25:34.728 --> 00:25:39.948
Like I was just adding an array of species
to sites so that we can . Ahead of time,

00:25:40.008 --> 00:25:43.108
we can say, look, these are the only
species we're gonna plant at this site.

00:25:43.448 --> 00:25:45.868
So when I'm going through the
field and it's raining and I've

00:25:45.868 --> 00:25:48.628
gotta take a photograph of 4,000
bloody trees, we just planted for

00:25:48.628 --> 00:25:49.788
proof for our funding partners.

00:25:50.108 --> 00:25:53.588
I don't wanna be scrolling past like sea
buckthorn, which we've never planted,

00:25:53.958 --> 00:25:56.638
Just to get to like the, the, the
subset of the eight species that

00:25:56.638 --> 00:25:57.998
are actually in that bloody field.

00:25:57.998 --> 00:25:58.238
Right.

00:25:58.578 --> 00:26:00.658
'cause we've got like 50 different
species we may plant there.

00:26:00.998 --> 00:26:04.538
So yeah, like I was just putting that in
and I just typed on the, on the sites.

00:26:04.988 --> 00:26:09.038
List I typed in species and it was
like, oh, would you like to add

00:26:09.098 --> 00:26:12.438
all of these obvious properties and
this whole schema and then reference

00:26:12.498 --> 00:26:14.738
the docs slash schema no sorry.

00:26:14.938 --> 00:26:17.068
Schema slash species
that I see over there.

00:26:17.108 --> 00:26:18.508
I was like, yes, yes, I bloody wood.

00:26:18.508 --> 00:26:20.388
And it just built like
loads of stuff for me.

00:26:20.638 --> 00:26:24.418
And even building, building that that
one schema was great, but there have been

00:26:24.418 --> 00:26:27.338
lots of times where it's just completely
hallucinated and done something absolutely

00:26:27.338 --> 00:26:29.418
bonkers, and I've just like pushed it.

00:26:29.558 --> 00:26:29.778
So

00:26:30.218 --> 00:26:33.578
I, I still don't trust it to do
anything much apart from like, kind

00:26:33.578 --> 00:26:37.578
of assist me, but I, I, I'll never
do dictated but not read with AI

00:26:38.113 --> 00:26:38.333
Lorna Mitchell: No,

00:26:38.568 --> 00:26:39.338
Track 1: it's not there yet.

00:26:39.373 --> 00:26:42.453
Lorna Mitchell: think as well, like it's
a, it's, it's a time enhancer for me.

00:26:42.873 --> 00:26:47.613
One of the things that I find time
consuming is I'm no longer particularly

00:26:47.643 --> 00:26:50.013
technically specialist in any given.

00:26:50.743 --> 00:26:51.548
Programming language.

00:26:51.828 --> 00:26:52.308
I write about

00:26:52.308 --> 00:26:53.868
four with equal levels of danger.

00:26:54.228 --> 00:26:56.828
PP is my original community,
but it's moved on.

00:26:57.188 --> 00:26:59.348
I wouldn't recognize it if I
walked past it in the street.

00:26:59.848 --> 00:27:04.548
And so and so actually I can write
all of those languages and I can

00:27:04.558 --> 00:27:07.148
debug all of those languages, but
I just like throw the thing I want.

00:27:08.213 --> 00:27:10.873
In and I get something back
and then that's enough.

00:27:11.213 --> 00:27:13.633
So otherwise you're
like, how do I iterate?

00:27:13.773 --> 00:27:14.993
How do I concatenate?

00:27:15.383 --> 00:27:16.433
What have I done wrong with

00:27:16.458 --> 00:27:16.698
Track 1: Yeah.

00:27:16.848 --> 00:27:17.138
Yeah.

00:27:17.253 --> 00:27:17.673
Lorna Mitchell: on this?

00:27:18.253 --> 00:27:21.153
You know, like I know that it
JavaScript array is a reference,

00:27:21.153 --> 00:27:22.433
but I need it to not be.

00:27:22.853 --> 00:27:27.473
And so that kind of speed up is quicker
for the things that I don't know.

00:27:28.053 --> 00:27:30.033
It just lies and I can't catch it.

00:27:30.093 --> 00:27:31.233
So yeah, I'm with you.

00:27:31.233 --> 00:27:31.433
That

00:27:31.608 --> 00:27:33.058
Track 1: That that is
absolutely the problem.

00:27:33.118 --> 00:27:36.258
And it's totally fine if this
decay like this podcast decay

00:27:36.288 --> 00:27:37.378
into complaining about ai.

00:27:37.538 --> 00:27:39.538
'cause we've been meaning to talk
more about AI on it for a while.

00:27:39.548 --> 00:27:41.978
We've got someone coming on soon
to talk about things that it is

00:27:41.978 --> 00:27:43.978
useful for and so we can get some
of the bullshit outta the way.

00:27:44.788 --> 00:27:47.248
But yeah, even with PHP, like
people have said, oh, it can help

00:27:47.248 --> 00:27:48.688
you write your tests or whatever.

00:27:48.908 --> 00:27:52.168
And I was writing a test for a
model and it just kept recommending

00:27:52.168 --> 00:27:56.208
that I like write these really
complicated tests for relationships,

00:27:56.338 --> 00:27:57.568
which you don't really need to do.

00:27:57.808 --> 00:28:00.848
'cause if you have an OMM that has
relationship logic and you just say, I.

00:28:01.068 --> 00:28:02.968
You know orders should have organization.

00:28:02.968 --> 00:28:04.128
You don't really need to write a test.

00:28:04.128 --> 00:28:06.168
That's, that says orders
do have organization,

00:28:06.508 --> 00:28:09.608
but the test it wrote was invalid
and didn't fundamentally work at all.

00:28:09.988 --> 00:28:11.248
And kept doing loads of other stuff.

00:28:11.248 --> 00:28:13.608
It was trying to test
methods that didn't exist

00:28:13.918 --> 00:28:16.128
like it was trying to find out if that I.

00:28:16.128 --> 00:28:19.838
Order was allocated to something,
but orders aren't allocated, like

00:28:19.848 --> 00:28:21.318
units are allocated to orders.

00:28:21.418 --> 00:28:26.158
So it, it sore enough to have a
real college try, but it didn't

00:28:26.398 --> 00:28:27.358
actually do the right thing.

00:28:27.458 --> 00:28:29.278
And it just confused me
more than if it didn't.

00:28:29.438 --> 00:28:32.998
'cause if, if I hadn't spent like 10
minutes trying to faff around with the,

00:28:33.458 --> 00:28:37.038
the bad test that it made, I would've
just Googled how do I test this thing

00:28:37.458 --> 00:28:38.358
and then done it

00:28:38.658 --> 00:28:38.878
So.

00:28:39.268 --> 00:28:44.328
Lorna Mitchell: And I do worry about how
much it helps us to learn new things,

00:28:44.348 --> 00:28:48.448
and especially if you are earlier in your
career, like actually, is this helping

00:28:48.588 --> 00:28:51.058
you to be the best that you can be?

00:28:51.118 --> 00:28:54.098
It, I'm, I'm just not sure,
and time will tell, I think.

00:28:54.908 --> 00:28:58.868
Track 1: Yeah, one, one devil's
advocate there is that it's, it's

00:28:58.868 --> 00:29:02.148
just sped up stack overflow, copy
pasting, which is, you know, and it

00:29:02.148 --> 00:29:03.388
has a bit of knowledge of your system

00:29:03.388 --> 00:29:04.708
where a stack overflow has none.

00:29:05.048 --> 00:29:08.588
So there's plenty of times that I've like
Googled for a problem and like copied

00:29:08.648 --> 00:29:12.788
and pasted the close enough thing into
my code base and, and hope for the best.

00:29:12.808 --> 00:29:16.828
And so if it's, if it's doing that,
but slightly better than, okay.

00:29:17.968 --> 00:29:18.188
Lorna Mitchell: It

00:29:18.188 --> 00:29:18.508
isn't

00:29:18.783 --> 00:29:21.423
Track 1: still not really adding that
knowledge and there's, you're missing

00:29:21.483 --> 00:29:26.993
the, like, the ability to see down votes
and, you know I mean, I think you were

00:29:26.993 --> 00:29:28.153
around in the code United Days, right?

00:29:28.173 --> 00:29:28.393
And,

00:29:28.393 --> 00:29:32.393
and if not early PHP days where a lot
of people were doing really dumb stuff

00:29:32.613 --> 00:29:33.793
and really dumb stuff was popular

00:29:34.333 --> 00:29:37.753
and, and the popularity of something,
the frequency of which you see

00:29:37.753 --> 00:29:38.873
something doesn't make it better.

00:29:39.433 --> 00:29:43.413
And so you kind of have to hope that
at least with Stack Overflow and

00:29:43.413 --> 00:29:46.333
some of those forums, you'd have
someone posting a really terrible

00:29:46.483 --> 00:29:50.013
idea that may even be accepted and
then a bunch of people down voting and

00:29:50.013 --> 00:29:52.133
going, whatcha doing underneath it?

00:29:52.423 --> 00:29:53.213
Which is good.

00:29:53.513 --> 00:29:54.893
And with this it just goes, now take that.

00:29:54.893 --> 00:29:55.413
May it'd be fine.

00:29:55.913 --> 00:29:56.353
Lorna Mitchell: Accepted answer.

00:29:56.453 --> 00:29:56.913
Go for it.

00:29:57.103 --> 00:29:57.393
Yeah.

00:29:57.393 --> 00:29:59.713
And what you want is you
want the most voted answer.

00:29:59.813 --> 00:30:02.313
And you also want, did
this change recently?

00:30:02.413 --> 00:30:03.713
You know, stack Overflow is not a

00:30:03.713 --> 00:30:04.003
Track 1: yeah.

00:30:04.003 --> 00:30:04.283
Yeah.

00:30:04.623 --> 00:30:06.683
It was the correct answer for years Yeah.

00:30:06.833 --> 00:30:09.633
Lorna Mitchell: was correct but after
2015, you should do it this way.

00:30:10.183 --> 00:30:13.393
Like that's a, that's a real
answer, and I feel that.

00:30:14.108 --> 00:30:17.598
Machine necessarily on our side with that

00:30:17.598 --> 00:30:20.238
because they can't take in that context.

00:30:21.448 --> 00:30:24.228
Track 1: can I, can I do a,
a complaint about oh, it's

00:30:24.228 --> 00:30:25.228
my podcast to do what I want?

00:30:25.518 --> 00:30:27.718
Lorna Mitchell: I love,
please, please continue.

00:30:28.948 --> 00:30:32.468
Track 1: one of the talks I saw by
a lovely bloke, well-intentioned

00:30:32.688 --> 00:30:35.178
talk, but the whole thing
fundamentally seemed to be.

00:30:36.323 --> 00:30:40.493
Integrating with other people's
APIs is really hard, so here

00:30:40.713 --> 00:30:42.773
we can get AI to do it for us.

00:30:43.353 --> 00:30:48.133
So here is an, an AI doing all of
this really complicated, amazing

00:30:48.463 --> 00:30:52.853
stuff and it was truly impressive
what the toy demos were doing.

00:30:53.113 --> 00:30:57.653
But towards the end of the question
and answer, it was very much,

00:30:57.983 --> 00:31:02.843
how much does the AI need the API
to be built in a specific way?

00:31:03.543 --> 00:31:08.283
And and he was like, oh yeah,
basically there are certain ways that

00:31:08.383 --> 00:31:10.323
AI will expect the API to be built.

00:31:10.783 --> 00:31:13.843
And if it's not built following
those very specific assumptions, then

00:31:13.843 --> 00:31:15.363
this basically won't work at all.

00:31:15.903 --> 00:31:20.283
So what some people do is build a
new API specifically for the ai.

00:31:20.293 --> 00:31:20.713
Lorna Mitchell: Mm-Hmm.

00:31:21.228 --> 00:31:24.018
Track 1: Where it does follow
all of those conventions and then

00:31:24.018 --> 00:31:25.258
it can save you loads of time.

00:31:25.258 --> 00:31:25.978
It's like, oh, okay.

00:31:25.978 --> 00:31:29.898
We're all just completely rebuilding
all of our APIs and, and doing BFFs

00:31:29.998 --> 00:31:34.658
for every client just so that AI can
then save some time instead of looking

00:31:34.678 --> 00:31:36.578
at the docs we spent ages making.

00:31:36.998 --> 00:31:40.918
I, that's, that's sort of thing is
where my, my, my bullshit flag goes up.

00:31:41.158 --> 00:31:45.118
'cause it's like, is this just early
days and the AI will eventually be able

00:31:45.118 --> 00:31:49.728
to talk to any API or are we just kind
of saying . Like the wizard will fix

00:31:49.728 --> 00:31:54.408
it and pass in more work onto API teams
who probably would've had a better time

00:31:54.408 --> 00:31:57.488
sitting down with their stakeholders and
asking what they really need instead of

00:31:57.648 --> 00:32:00.288
building some shit that was so confusing
in the first place, that everyone's

00:32:00.288 --> 00:32:03.528
scared of looking at the documentation
and then ask for an AI to be built so

00:32:03.528 --> 00:32:04.808
they can figure out what the hell you did.

00:32:05.038 --> 00:32:05.328
Like

00:32:05.818 --> 00:32:07.568
maybe we could just make better APIs.

00:32:07.918 --> 00:32:08.208
Yeah.

00:32:08.703 --> 00:32:12.353
Lorna Mitchell: Well, and I, I'm an
optimist, so I, I wanna flip that argument

00:32:12.373 --> 00:32:15.873
and say you're right, but it, what you're
actually saying is that the people who

00:32:15.983 --> 00:32:21.193
have, well-designed, well-documented
APIs described with open API.

00:32:22.198 --> 00:32:26.018
Can integrate easily and well both
with other platforms and with ai if

00:32:26.018 --> 00:32:27.538
that's what people want to use it with.

00:32:27.968 --> 00:32:29.458
It's good for all integrations.

00:32:29.718 --> 00:32:34.298
People who have badly designed
APIs incomplete API documentation,

00:32:34.968 --> 00:32:36.338
they are gonna have a hard time.

00:32:36.618 --> 00:32:38.418
I don't think the wrapper
APIs add anything.

00:32:39.318 --> 00:32:39.538
You,

00:32:39.748 --> 00:32:43.618
you'd be better just to start
again, talk to the actual users

00:32:44.328 --> 00:32:45.618
talk to the AI if you like.

00:32:45.618 --> 00:32:46.618
They're very chatty.

00:32:47.358 --> 00:32:48.458
And make, and make things better.

00:32:49.578 --> 00:32:50.198
Track 1: That's cool.

00:32:50.968 --> 00:32:53.818
Yeah, I think it's a good point is that
some of those, some of those people

00:32:53.818 --> 00:32:57.178
were coming from a place of, you don't
have any open API or anything similar.

00:32:57.238 --> 00:32:57.818
So if it's just

00:32:57.818 --> 00:33:02.618
like you have an implementation and then
like some Jason happens, I guess then how

00:33:02.618 --> 00:33:04.018
would anyone know anything about this?

00:33:04.078 --> 00:33:07.698
And I think open API is an interesting
way that it can add in more.

00:33:08.543 --> 00:33:10.883
You can, you can train
an API on that a bit.

00:33:11.183 --> 00:33:14.483
And even if they don't understand what
all of the objects are moving through.

00:33:15.698 --> 00:33:18.468
Part of something that a, the
API community needs to do anyway.

00:33:18.598 --> 00:33:22.648
Part of my like 10 year plan, 20
year plan for like what I'm gonna be

00:33:22.728 --> 00:33:26.968
blathering about in API world has always
been step one, get people defining

00:33:27.438 --> 00:33:28.928
what the hell this data is, right?

00:33:28.928 --> 00:33:32.048
Like open API isn't the end
goal that we all, we do this

00:33:32.048 --> 00:33:33.128
and then everything's brilliant.

00:33:33.128 --> 00:33:36.848
Even though I talk about it plenty,
it was was you have random Jason

00:33:36.988 --> 00:33:39.968
flying about the internet and no
one knows what the fuck is going on.

00:33:40.158 --> 00:33:41.048
This is not great.

00:33:41.268 --> 00:33:45.103
So getting people to like . Write that
down, make a contract that, that, that

00:33:45.103 --> 00:33:47.343
was step one and then, okay, great.

00:33:47.343 --> 00:33:50.063
We know what your implement, you
know, your version of a tree and

00:33:50.063 --> 00:33:53.263
your version of a person and your
version of a whatever account.

00:33:53.523 --> 00:33:56.303
But then like, can we try
and have shared collections?

00:33:56.403 --> 00:33:56.823
And at

00:33:56.823 --> 00:33:59.583
stoplight we were doing design
libraries where you can have like

00:33:59.743 --> 00:34:04.463
a repository of open API models you
can reuse within your organization.

00:34:04.743 --> 00:34:07.478
'cause there was one company
that had . 500 different

00:34:07.478 --> 00:34:08.958
versions of a flight, which is

00:34:08.958 --> 00:34:10.318
literally plane goes from there to there.

00:34:10.318 --> 00:34:11.598
Like that's not very complicated.

00:34:12.098 --> 00:34:14.308
With some seats, but there are
a lot of different versions.

00:34:14.678 --> 00:34:18.158
And so they've, they've kind of squished
that down to one version of a flight now.

00:34:18.178 --> 00:34:22.478
So it's literally describe the
mess and then like reduce the,

00:34:22.618 --> 00:34:27.238
the, the mess  and then like reuse
those outside of the organization

00:34:27.388 --> 00:34:31.078
with, you know, shared data models
and, and concepts like schema.org.

00:34:31.078 --> 00:34:32.278
But maybe not that 'cause it's like.

00:34:33.323 --> 00:34:36.803
A lot of that is biological medical
data, which doesn't seem very

00:34:36.803 --> 00:34:38.203
helpful, , but that kind of concept.

00:34:38.943 --> 00:34:41.723
And then after that, like everyone
is more trained, Haos becomes

00:34:41.723 --> 00:34:43.203
more useful in that world because

00:34:43.303 --> 00:34:45.923
you don't need to train it to
know exactly what that URL is.

00:34:45.923 --> 00:34:48.443
You train it to know what these generic
models are and how you work with them.

00:34:48.693 --> 00:34:51.893
But it also makes AI more useful
'cause it then has that same shared

00:34:51.893 --> 00:34:53.013
knowledge of what's coming back.

00:34:53.153 --> 00:34:56.573
So I, I like that that
approach seems to be.

00:34:57.388 --> 00:34:58.768
The same as my existing approach.

00:34:59.468 --> 00:35:00.808
, I'd have to change my thoughts too much.

00:35:00.808 --> 00:35:01.128
Great.

00:35:01.628 --> 00:35:05.408
But yeah, the other, there is a lot
of like magical Wi Wizard stuff in

00:35:05.408 --> 00:35:08.728
the world of AI and I do wanna kind
of get people to be a bit cautious

00:35:08.778 --> 00:35:10.168
about what they go all in on.

00:35:10.368 --> 00:35:10.648
'cause it,

00:35:10.838 --> 00:35:11.888
some of it doesn't seem very helpful.

00:35:12.683 --> 00:35:13.103
Lorna Mitchell: agreed.

00:35:13.378 --> 00:35:17.188
Track 1: Last bit we were gonna
talk about was open API four.

00:35:17.548 --> 00:35:19.068
I have been very out of the loop on this.

00:35:19.168 --> 00:35:22.348
It has a fun name, moonwalk,
what's going on, help.

00:35:22.593 --> 00:35:22.883
Lorna Mitchell: Yeah.

00:35:22.903 --> 00:35:25.003
I'm not sure why it needed
a project code name.

00:35:25.463 --> 00:35:29.176
But I think we've been kicking
this around for a while.

00:35:29.336 --> 00:35:31.856
I mean, I went off and spent
two years working in the

00:35:31.976 --> 00:35:33.056
database space and came back.

00:35:33.056 --> 00:35:35.256
We were still talking about
it, so it's not going anywhere.

00:35:36.161 --> 00:35:38.481
Track 1: I was gonna say you vanished
for a while and then came back to open

00:35:38.581 --> 00:35:39.141
Lorna Mitchell: I did, I had

00:35:39.241 --> 00:35:39.601
Track 1: said yay.

00:35:39.661 --> 00:35:41.901
Lorna Mitchell: absolutely lovely time
doing loads of derell with loads of

00:35:41.901 --> 00:35:43.621
open source databases at Ivan, which was

00:35:43.621 --> 00:35:43.781
great.

00:35:43.841 --> 00:35:45.221
Now I'm back in the API space.

00:35:45.221 --> 00:35:46.101
That's great as well.

00:35:46.321 --> 00:35:47.621
Did I mention I'm an optimist?

00:35:48.321 --> 00:35:51.341
So news, news from the open API community.

00:35:51.341 --> 00:35:53.041
Then I mean, I think I.

00:35:53.351 --> 00:35:57.396
There's news in both the V
three and the V four worlds.

00:35:57.576 --> 00:36:00.636
The V three news is just, we
are seeing a lot of adoption.

00:36:00.696 --> 00:36:02.476
We are seeing people using 3.1.

00:36:03.236 --> 00:36:06.596
I think some of those educational
resources are starting to get out there.

00:36:07.076 --> 00:36:10.156
Companies like Redley, and, but
it takes the whole ecosystem

00:36:10.696 --> 00:36:15.636
and, and we, I think even though we are
commercial competitors, we know we share a

00:36:15.636 --> 00:36:17.316
community and we collaborate really well.

00:36:17.806 --> 00:36:20.226
I'm sure that's true in
other industries as well.

00:36:20.766 --> 00:36:24.226
But, so yeah, three, going from strength
to strength, new tools all the time.

00:36:25.006 --> 00:36:26.936
General goodness, four.

00:36:28.116 --> 00:36:32.516
We've just put out a blog post from
the Open API initiative committing to

00:36:32.516 --> 00:36:36.076
launching a version of four in 2024.

00:36:37.191 --> 00:36:37.481
Track 1: Okay.

00:36:37.481 --> 00:36:39.041
Getting people ready for it instead

00:36:39.111 --> 00:36:39.601
Lorna Mitchell: ticking.

00:36:40.101 --> 00:36:40.321
Yep.

00:36:40.861 --> 00:36:43.801
And there is, if anyone wants to
see, we'll put it in the show notes.

00:36:43.831 --> 00:36:49.561
There's a repository full of discussions
on GitHub about what we want to solve.

00:36:50.691 --> 00:36:52.771
At a high level um, it's, we are

00:36:52.771 --> 00:36:58.811
looking at simplifying the structure,
making it a bit more resource oriented

00:36:59.431 --> 00:37:01.771
and a little bit more
approachable as well.

00:37:02.461 --> 00:37:02.811
Jason

00:37:02.996 --> 00:37:06.016
Track 1: Just to explain on that a
second, the resource orientated, meaning

00:37:06.016 --> 00:37:07.536
it's a bit less about like paths.

00:37:07.536 --> 00:37:08.296
What are your paths?

00:37:08.856 --> 00:37:12.776
'cause that's been a, a concern
about . Not really being very resty.

00:37:13.376 --> 00:37:17.016
'cause like paths, some people will
say that in a rest API like paths

00:37:17.016 --> 00:37:18.416
are the least important thing.

00:37:18.756 --> 00:37:22.576
And they could literally be like a random
MD five Check sum is the most extreme

00:37:22.576 --> 00:37:26.016
example I've heard someone say because
it really is just, it's about interacting

00:37:26.016 --> 00:37:28.456
with resources as like a state machine.

00:37:29.076 --> 00:37:33.336
And the homepage is a resource
that then like lets you see other

00:37:33.616 --> 00:37:36.376
resources you could interact with
in various ways and describes how.

00:37:36.826 --> 00:37:40.406
And so the fact that open API has
always been like, tell me your paths,

00:37:40.966 --> 00:37:44.086
resources are optional, has always felt
a little bit RPC ish to many people.

00:37:44.226 --> 00:37:44.446
So

00:37:44.666 --> 00:37:45.566
is that something that's

00:37:45.941 --> 00:37:46.161
Lorna Mitchell: so

00:37:46.871 --> 00:37:50.441
well, and the goal I think, with
moonwalk is to get away from

00:37:50.611 --> 00:37:54.881
paths so that we can include more
types of API, including the ones

00:37:54.881 --> 00:37:56.721
that are less restful.

00:37:57.181 --> 00:37:57.401
So

00:37:57.401 --> 00:38:02.201
with RPC, where you have one end point
and maybe different query parameters or.

00:38:03.046 --> 00:38:05.936
Body data makes different actions happen.

00:38:06.596 --> 00:38:09.416
You can't represent that right now in

00:38:09.416 --> 00:38:10.256
open API.

00:38:10.756 --> 00:38:16.236
If you can just have, it's like
the path and verb combination.

00:38:16.236 --> 00:38:17.156
Is it get, or is it post?

00:38:17.156 --> 00:38:17.836
What's the exact

00:38:17.866 --> 00:38:18.156
path?

00:38:18.536 --> 00:38:22.236
Not including query parameters,
that's your unique identifier.

00:38:22.686 --> 00:38:26.866
Track 1: Yeah, someone had to make open
api sorry, open RPC, which is like a

00:38:26.866 --> 00:38:30.266
copy paste of open API, but tweaked
it so that you could do RPC stuff.

00:38:30.406 --> 00:38:30.626
And

00:38:30.626 --> 00:38:31.826
so yeah, that would be nice if.

00:38:32.231 --> 00:38:32.521
Lorna Mitchell: Yeah.

00:38:32.901 --> 00:38:36.201
And looking more at, there are more,
the more things than that, that go into

00:38:36.271 --> 00:38:38.001
what we are now calling a signature.

00:38:38.391 --> 00:38:39.681
Like what endpoint is this?

00:38:39.981 --> 00:38:42.081
How would you root it in your code?

00:38:42.501 --> 00:38:48.201
You know, does your API do different
things on header or on some other

00:38:48.531 --> 00:38:50.521
thing that we could take into account.

00:38:50.671 --> 00:38:55.881
Otherwise, you end up with this very
lots of polymorphism because you can't.

00:38:56.651 --> 00:39:00.336
Correctly represent that these two
things look completely different.

00:39:00.396 --> 00:39:02.936
If it's, you know, completed
orders or incomplete orders,

00:39:03.716 --> 00:39:05.936
it might be a filter on an end
point, but you're gonna get

00:39:05.936 --> 00:39:07.216
different types of object back.

00:39:08.096 --> 00:39:11.096
Moonwalk is gonna cater for that as well.

00:39:11.546 --> 00:39:11.946
But there's

00:39:11.946 --> 00:39:13.826
a thriving community, lots of chats.

00:39:14.116 --> 00:39:15.656
Th three isn't going anywhere.

00:39:15.656 --> 00:39:17.176
That's a lively community too.

00:39:17.786 --> 00:39:21.366
And as with the open API initiative,
we're looking more at how we can

00:39:22.181 --> 00:39:24.786
Better respond to questions in
that community, stuff like that.

00:39:24.986 --> 00:39:28.026
I have triaged on those repos
and just trying to get everyone

00:39:28.026 --> 00:39:28.986
to be a bit more present.

00:39:30.371 --> 00:39:30.661
Track 1: Nice.

00:39:31.181 --> 00:39:33.381
I will have to dive in a little bit more.

00:39:33.501 --> 00:39:36.911
I mean, bloody Yeah, we had Darryl Miller
on on the episode on the podcast, and I

00:39:36.911 --> 00:39:39.431
didn't ask him a single question about
it, but  we're talking about other stuff.

00:39:40.151 --> 00:39:43.711
I think the reason they came up with
moonwalk was that they wanted a bit of

00:39:43.751 --> 00:39:48.351
a experimental playground where they
could just try and hash out some ideas

00:39:48.351 --> 00:39:49.271
without everyone going.

00:39:49.271 --> 00:39:50.351
That's definitely what's happening.

00:39:50.351 --> 00:39:51.631
Panic, panic, don't do four.

00:39:52.001 --> 00:39:53.791
Um, Which would definitely happen.

00:39:53.961 --> 00:39:54.711
We've had that before.

00:39:55.161 --> 00:39:56.141
So I can understand that.

00:39:56.141 --> 00:40:00.021
And it sounds like it's kind of got
enough agreement amongst the people

00:40:00.021 --> 00:40:02.181
that were paying attention that it.

00:40:02.861 --> 00:40:05.201
Is moving towards possibly
actually being four.

00:40:05.221 --> 00:40:06.361
So that's, that's what you want.

00:40:06.651 --> 00:40:07.851
So we'll just have a normal name.

00:40:07.851 --> 00:40:09.851
It will just be called open API four.

00:40:10.061 --> 00:40:12.051
We're not doing like cool branding now

00:40:12.351 --> 00:40:12.641
Lorna Mitchell: Well,

00:40:12.681 --> 00:40:12.801
a

00:40:13.016 --> 00:40:13.496
Track 1: that's cool.

00:40:13.721 --> 00:40:14.721
'
Lorna Mitchell: cause you're
actually walking backwards.

00:40:14.841 --> 00:40:15.281
I don't know.

00:40:15.701 --> 00:40:15.991
Track 1: Yeah.

00:40:16.231 --> 00:40:19.151
, this is, this is several
very casual steps backwards.

00:40:19.591 --> 00:40:19.871
Brilliant.

00:40:20.221 --> 00:40:20.671
Well, yeah.

00:40:20.671 --> 00:40:20.991
Great.

00:40:21.051 --> 00:40:22.151
I'm glad to hear those changes.

00:40:22.391 --> 00:40:26.664
I mean, one, one, . Small
thing in my head is that.

00:40:26.831 --> 00:40:29.701
There are certain things that
open API won't let you do that.

00:40:29.731 --> 00:40:31.901
I've always been quite happy about, in a

00:40:31.901 --> 00:40:35.501
way, cause like open API will let
you perfectly describe a bad API.

00:40:35.681 --> 00:40:38.461
But there are some of the things
you shouldn't be doing that

00:40:38.461 --> 00:40:39.741
you can't currently describe.

00:40:40.161 --> 00:40:43.261
And so by being able to describe more
of those things you shouldn't be doing,

00:40:43.441 --> 00:40:46.941
I'm a little bit like flexibility
is important so that you can get

00:40:46.941 --> 00:40:50.021
all the old APIs on and then you
can edge them in the right direction

00:40:50.051 --> 00:40:52.031
with, you know automated linters.

00:40:52.281 --> 00:40:54.621
And, and get them doing the
right conventions that way.

00:40:54.801 --> 00:40:57.021
But part of it was also you.

00:40:57.281 --> 00:40:58.261
Man, why did you do that?

00:40:58.261 --> 00:40:59.021
Please don't do that.

00:40:59.021 --> 00:40:59.821
Change that quickly.

00:41:00.871 --> 00:41:02.161
Lorna Mitchell: Yeah, I
think that's a, I think

00:41:02.161 --> 00:41:03.081
that's a real concern.

00:41:03.541 --> 00:41:07.161
And, you know, I want, I wanna
represent and respect everyone else's

00:41:07.161 --> 00:41:08.721
work, but looking at the adoption for

00:41:08.721 --> 00:41:14.561
3.1, which was a very obvious
improvement and upgrade for 3.0 users.

00:41:15.214 --> 00:41:16.784
some tools were available quite quickly.

00:41:17.104 --> 00:41:18.304
I know some took some time.

00:41:19.259 --> 00:41:22.264
There's a whole raft of new
tools have come out for 3.1.

00:41:22.274 --> 00:41:24.104
We're really seeing the adoption now.

00:41:24.754 --> 00:41:27.244
4.0 doesn't offer anything
to existing users.

00:41:27.723 --> 00:41:27.943
Track 1: Mm.

00:41:28.158 --> 00:41:30.278
Lorna Mitchell: brings more
people into the fold, and if

00:41:30.278 --> 00:41:31.638
you're an existing tools vendor.

00:41:32.213 --> 00:41:33.843
Which obviously that's my job now.

00:41:34.759 --> 00:41:37.019
I'm not sure where we're going with that.

00:41:37.129 --> 00:41:39.699
It's going to be significantly
more difficult to build for

00:41:40.279 --> 00:41:42.259
as things look at this very early stage.

00:41:43.119 --> 00:41:46.979
So I am supporting everything that's
happening in the Open a BI initiative.

00:41:47.799 --> 00:41:50.239
Very excited to see just better.

00:41:50.608 --> 00:41:55.218
Education, better appreciation in
the industry for what we do with

00:41:55.218 --> 00:41:57.458
Open API three and 3.1 and how it can

00:41:57.458 --> 00:41:57.658
help.

00:41:58.558 --> 00:42:00.138
And watching what's happening in four.

00:42:01.238 --> 00:42:05.498
It takes a long time to write these
specifications and for tools to follow.

00:42:06.118 --> 00:42:07.778
So nobody needs to panic.

00:42:08.283 --> 00:42:08.573
Track 1: Yeah.

00:42:08.573 --> 00:42:08.813
Yeah.

00:42:08.813 --> 00:42:09.933
It's not appearing anytime now.

00:42:09.973 --> 00:42:15.023
I mean, even if, even if, didn't you
say that mo version four is committed

00:42:15.023 --> 00:42:16.943
to appearing sometime in 2024?

00:42:17.213 --> 00:42:19.183
Well, that's, that's 12
months long, isn't it?

00:42:19.523 --> 00:42:19.743
So

00:42:20.663 --> 00:42:24.203
Lorna Mitchell: And I don't know,
you know, open API initiative does

00:42:24.203 --> 00:42:27.683
not build tools, and I'm not, it's
not clear to me right now who will.

00:42:27.713 --> 00:42:28.063
Track 1: Right.

00:42:28.533 --> 00:42:29.303
Well, that's the thing.

00:42:29.403 --> 00:42:32.783
So yeah, like in a year's time
we could have a spec out and

00:42:32.783 --> 00:42:33.863
then still no one will use it.

00:42:34.003 --> 00:42:36.643
'cause it takes a long time for,
for tool and vendors to catch up.

00:42:36.973 --> 00:42:40.653
Which is why it's important to like,
you know, plow on whilst, but some

00:42:40.653 --> 00:42:42.253
tools have only just upgraded to 3.1.

00:42:42.253 --> 00:42:43.293
Yeah, this all takes a long time.

00:42:43.313 --> 00:42:45.653
So like, someone needs to be thinking
about the future instead of just

00:42:45.653 --> 00:42:46.733
going, don't change anything.

00:42:46.763 --> 00:42:47.253
It's scary.

00:42:47.873 --> 00:42:48.313
Lorna Mitchell: Me it is

00:42:48.313 --> 00:42:50.793
about doing good rep, good support

00:42:51.693 --> 00:42:52.473
for 3.1.

00:42:52.743 --> 00:42:56.353
Lots of people are coming
into APIs or raising their API

00:42:56.383 --> 00:42:59.353
game now with what's available today.

00:42:59.853 --> 00:43:00.273
And I

00:43:00.273 --> 00:43:02.593
think, you know, I work
in developer experience.

00:43:02.633 --> 00:43:06.193
I really care about stuff that you
can do today, and so that's my focus.

00:43:06.728 --> 00:43:07.008
Track 1: absolutely.

00:43:07.278 --> 00:43:07.568
Yeah.

00:43:07.568 --> 00:43:08.208
Gotta do both.

00:43:08.428 --> 00:43:12.168
But as long as, as long as the new
one thinks about migration path, like

00:43:12.168 --> 00:43:15.688
as long as, as long as it's made in
such a way where there is a migration

00:43:15.688 --> 00:43:18.448
path and, and that can be automated,
I think that's pretty important.

00:43:18.908 --> 00:43:19.528
But also.

00:43:19.608 --> 00:43:20.728
Lorna Mitchell: is one
of the requirements.

00:43:21.188 --> 00:43:21.408
Yes,

00:43:21.808 --> 00:43:24.138
Track 1: Okay, good , because
various tooling vendors.

00:43:24.358 --> 00:43:24.928
Lorna Mitchell: They got it.

00:43:25.048 --> 00:43:25.338
Track 1: Yeah.

00:43:25.368 --> 00:43:28.778
Well, Mike Ralph's there saying like,
he, you know, he, he made swagger to

00:43:28.778 --> 00:43:32.258
open API and he is gonna make open
API three to moonwalk or whatever.

00:43:32.258 --> 00:43:33.178
Like he, he's on it.

00:43:33.588 --> 00:43:35.398
But yeah, that, that is important.

00:43:35.738 --> 00:43:39.728
And then the other thing, like
Eric Wild made this really good

00:43:39.728 --> 00:43:42.728
point at a API days Paris about how

00:43:43.933 --> 00:43:48.543
Async API released a async passer,
and it is like the defacto passer.

00:43:48.543 --> 00:43:50.343
You can pass a document any way you like.

00:43:50.943 --> 00:43:54.243
You can also use theirs, and I'm sure it's
just written in, in TypeScript and nothing

00:43:54.243 --> 00:43:59.403
else, but this thing, this thing exists
and, and the majority of tools can use it.

00:43:59.403 --> 00:44:03.403
And an open API majority of the
tools are TypeScript or no something.

00:44:03.703 --> 00:44:06.483
So I'm, I'm really thinking that like
that is the next most important step

00:44:06.483 --> 00:44:10.683
is for somebody probably Mike, let's
be honest, he loves to write some code.

00:44:11.523 --> 00:44:13.923
Somebody to uh, just
volunteered him either way.

00:44:14.183 --> 00:44:16.503
Somebody to write like an open
API passer, that is the default.

00:44:17.083 --> 00:44:18.963
'cause there's been lots of these
other little ones here and there.

00:44:18.963 --> 00:44:21.923
Like I've just deprecated one of them
that I awkwardly inherited from some

00:44:21.923 --> 00:44:24.363
guy I tried to help and then, and then
I got stuck doing all the code and I

00:44:24.363 --> 00:44:25.163
was like, I don't have time for this.

00:44:25.493 --> 00:44:28.533
There's a lot of these like awkward ones
floating about, but if there can be one

00:44:28.533 --> 00:44:30.553
sample represent you know implementation.

00:44:31.388 --> 00:44:34.513
Initially written by a person,
but as more people use it, more

00:44:34.513 --> 00:44:35.513
people will help maintain it.

00:44:35.973 --> 00:44:39.873
And then that can be okay, you've got,
you've got your passer that works for

00:44:39.873 --> 00:44:43.553
3.1, but there's this other passer
over here that works for four and that

00:44:43.553 --> 00:44:45.073
makes it a lot easier to switch to.

00:44:45.193 --> 00:44:46.913
'cause you don't have to
rebuild your passer to support

00:44:47.023 --> 00:44:48.713
four, you just use the thing.

00:44:49.253 --> 00:44:52.873
And then you don't have to worry about
all the intricacy, awkward bits of yaml.

00:44:52.873 --> 00:44:54.833
It's just you have some
models to, to work with.

00:44:55.193 --> 00:44:56.233
I really hope they can do that.

00:44:56.233 --> 00:44:57.993
And I'll be nagging
people to give that a try.

00:44:58.213 --> 00:45:00.618
Without volunteering myself 'cause
I'm crap at code these days.

00:45:01.773 --> 00:45:04.773
Lorna Mitchell: I think it's a tricky
one, you know, 'cause I work for a

00:45:04.773 --> 00:45:07.253
tools vendor now, so I was like, oh,
you are gonna build some of the tools.

00:45:07.273 --> 00:45:10.093
Do you wanna tell me what else
you're gonna build so that we don't

00:45:10.093 --> 00:45:12.333
invest our commercial expertise in

00:45:12.358 --> 00:45:12.648
Track 1: Yeah.

00:45:12.953 --> 00:45:16.863
Lorna Mitchell: you know, and I'm .I'm not
really sure if the proliferation of many

00:45:16.863 --> 00:45:19.583
tools in open API is a feature or a bug.

00:45:19.603 --> 00:45:23.023
But I think feature, I think the
competition has helped because

00:45:23.533 --> 00:45:25.183
it's very open source, isn't it?

00:45:25.183 --> 00:45:25.703
It's, it's a,

00:45:25.703 --> 00:45:26.623
it's an open standard.

00:45:26.933 --> 00:45:28.183
There's loads of different tools.

00:45:28.563 --> 00:45:32.143
You know, open API tools tells
that story loud and clear.

00:45:32.363 --> 00:45:35.343
You can choose, it's in your tech stack.

00:45:35.493 --> 00:45:36.903
There's always something.

00:45:37.213 --> 00:45:37.703
Whereas

00:45:37.863 --> 00:45:41.743
I think if we go to one official version,
we're tied down to the speed that the

00:45:42.248 --> 00:45:45.893
Central initiative works at, which isn't
always the same speed the industry does

00:45:46.883 --> 00:45:49.813
Track 1: Yeah, I mean, hey, maybe that
could be a working group right in,

00:45:49.813 --> 00:45:53.213
in, instead of it just being , very
overworked, Mike  and trying to do

00:45:53.213 --> 00:45:55.453
the thing to make all the vendors
happy, who are all getting paid to

00:45:55.453 --> 00:45:56.613
work on their tools and he's not.

00:45:56.953 --> 00:45:59.543
Maybe that could be a working group
where we're like, let's hash out like

00:45:59.543 --> 00:46:01.623
what we need from a, a shared passer.

00:46:01.843 --> 00:46:05.183
And then if anyone in the group ends
up not really getting something that.

00:46:05.513 --> 00:46:08.323
They're happy with and they can just go
and make their own however they want.

00:46:08.423 --> 00:46:12.603
But yeah, definitely it is a difficult
line in general with like, should the open

00:46:12.643 --> 00:46:14.363
API foundation be making all this stuff?

00:46:14.563 --> 00:46:16.563
'cause they're like, well we've
just made a documentation tool.

00:46:17.383 --> 00:46:19.563
You know,  like that
would be pretty messed up.

00:46:19.583 --> 00:46:22.273
Lorna Mitchell: well, and the
members are documentation tool

00:46:22.743 --> 00:46:25.753
vendors, so that's awkward Async.

00:46:25.793 --> 00:46:28.833
KPII have the opposite one, and you
might have seen this as well from

00:46:29.283 --> 00:46:31.613
having Async KPI support spectral.

00:46:32.468 --> 00:46:35.418
Reduc, CLI has Async API support
as well, just for linting.

00:46:35.418 --> 00:46:41.448
We don't have it in docs yet, and honestly
there's the Async API community doesn't

00:46:41.448 --> 00:46:42.848
really talk about anyone else's tools.

00:46:42.908 --> 00:46:44.528
It doesn't have the same ecosystem.

00:46:44.878 --> 00:46:46.248
They just build their own tools.

00:46:46.248 --> 00:46:47.728
They're all quite closely coupled.

00:46:47.728 --> 00:46:48.528
It's the same people.

00:46:48.853 --> 00:46:49.203
Track 1: Right.

00:46:49.533 --> 00:46:50.463
Lorna Mitchell: Postman pays them.

00:46:50.463 --> 00:46:51.263
That's what you get.

00:46:51.763 --> 00:46:56.383
And so it's very, very different despite
the fact that those two projects have

00:46:56.383 --> 00:46:58.223
quite a lot of shared philosophy.

00:46:58.573 --> 00:47:00.743
They also don't, and the tools is

00:47:00.783 --> 00:47:01.863
a really big differentiator.

00:47:02.439 --> 00:47:03.329
Track 1: That is interesting.

00:47:03.759 --> 00:47:07.089
Well, still, I'm always excited about
the potential for collaboration and

00:47:07.089 --> 00:47:09.719
at some point I'll be picking your
brains about I chatted to all the

00:47:09.719 --> 00:47:12.879
other API linkers and we're all gonna
have a conversation about like coming

00:47:12.879 --> 00:47:14.599
up with a shared rule set format.

00:47:14.739 --> 00:47:17.759
And even if it's not one that anyone
particularly wants to make their their

00:47:17.759 --> 00:47:21.239
default, it's just like, can we make some
tools that swap them in all directions?

00:47:21.559 --> 00:47:22.479
'cause that'll be cool.

00:47:23.019 --> 00:47:26.599
Although I gotta talk to the optic team
about, they've just come up with um,

00:47:26.963 --> 00:47:30.923
lint, GPT, where you just write your
rules as a, an array of strings and

00:47:30.923 --> 00:47:32.283
hope that the wizard is consistent.

00:47:32.383 --> 00:47:32.603
But

00:47:32.783 --> 00:47:34.123
I'm gonna give that to all a try

00:47:34.238 --> 00:47:36.278
Lorna Mitchell: I think
Optic currently have the best

00:47:36.528 --> 00:47:40.238
converters, so they understand
this problem space, but because.

00:47:40.293 --> 00:47:40.583
Track 1: Yeah.

00:47:40.613 --> 00:47:40.903
Yeah.

00:47:41.428 --> 00:47:45.298
Lorna Mitchell: Redoc, CLI,
all our linting is very like

00:47:45.538 --> 00:47:47.498
a ST data structure driven.

00:47:47.888 --> 00:47:48.378
It's not

00:47:49.138 --> 00:47:51.778
JSON path driven like the others.

00:47:52.838 --> 00:47:55.938
My, I had a quick look and I was like,
oh, this is gonna be really difficult.

00:47:55.938 --> 00:47:59.578
Interrupt because we
are not describing, you

00:47:59.578 --> 00:48:03.298
know, we're like it, oh, you
have a response example here.

00:48:03.768 --> 00:48:05.418
This is what we do with
this response examples.

00:48:05.418 --> 00:48:08.338
It's not like it's this
path, this path, this path.

00:48:08.978 --> 00:48:09.328
Track 1: Right.

00:48:09.563 --> 00:48:11.333
Lorna Mitchell: Turn,
turn left at this array.

00:48:11.333 --> 00:48:13.876
Then take the third
success response element.

00:48:14.056 --> 00:48:14.596
You know, like

00:48:14.686 --> 00:48:14.976
Track 1: Yeah.

00:48:15.016 --> 00:48:15.296
I gotcha.

00:48:15.616 --> 00:48:17.256
cause it's based on,
it's based on OAS kit.

00:48:17.256 --> 00:48:17.376
Right.

00:48:17.376 --> 00:48:18.256
And I remember how that works.

00:48:18.256 --> 00:48:21.096
Like OAS kit just walks through and
then goes, oh, I found one of these.

00:48:21.096 --> 00:48:21.976
Anyone care about this?

00:48:21.976 --> 00:48:22.576
Yeah, you do.

00:48:22.576 --> 00:48:22.816
Cool.

00:48:22.836 --> 00:48:23.616
Run some rules on it.

00:48:23.616 --> 00:48:27.181
Whereas we're like, go through the
rules and then like . Delve into the

00:48:27.181 --> 00:48:29.101
depths following this arcane direction.

00:48:29.471 --> 00:48:31.791
I shouldn't have opened up this can
of worms so late in the podcast.

00:48:32.041 --> 00:48:32.361
We like

00:48:32.416 --> 00:48:33.016
Lorna Mitchell: we're gonna still

00:48:33.041 --> 00:48:35.721
Track 1: 35 minutes normally,
and I yeah, I could, I could

00:48:35.721 --> 00:48:36.841
talk to you for hours, honestly.

00:48:36.951 --> 00:48:40.141
Yeah, it it's really great to have you on
the show and we'll have to get you back on

00:48:40.141 --> 00:48:41.301
to talk about other stuff in the future.

00:48:41.401 --> 00:48:41.741
For sure.

00:48:41.941 --> 00:48:42.231
Lorna Mitchell: That

00:48:42.231 --> 00:48:42.751
would be awesome.

00:48:43.061 --> 00:48:43.541
Track 1: for coming,

00:48:43.751 --> 00:48:44.311
Lorna Mitchell: for having me.

00:48:44.484 --> 00:48:44.904
Track 1: Cheers.

00:48:45.084 --> 00:48:45.304
Bye.