WEBVTT

00:00.000 --> 00:09.280
Open Source Project and so I was like, okay, I'll just wear this one, but I think the

00:09.280 --> 00:14.880
luggage is arriving at the hotel, so I'm only getting it, and I have new boxes on for the

00:14.880 --> 00:19.680
day just FYI, I did I bought those yesterday, so.

00:20.560 --> 00:23.440
All right, good. Welcome, first time. Thank you.

00:23.440 --> 00:28.320
Thank you. Thank you for giving their presentation, and go and unbox them, slice them up.

00:28.320 --> 00:29.520
Yes. Okay.

00:29.520 --> 00:34.720
What's it about how we transform our documentation into interactive sound boxes?

00:34.720 --> 00:38.960
Let's welcome everyone. Thank you.

00:41.520 --> 00:45.760
Thank you for having me today, it's really nice to actually see, I know we've had quite a full room

00:45.760 --> 00:49.600
today, but it's actually nice to see so many people interested in learning about

00:49.600 --> 00:53.200
interactive sound boxes, because I think it's a bit of a niche for documentation.

00:53.200 --> 00:57.760
I think it depends what sort of camp you've fallen on and how you interact with your documentation,

00:57.760 --> 01:03.840
and I'll get on with that in a moment. I don't normally do this like about myself, but I think I

01:03.840 --> 01:10.640
wanted to for this presentation because it shows you how my brain works and sort of where I come from.

01:10.640 --> 01:16.720
But so what for Grafana Lamps? Work as part of the dev advocacy team there, and most of the time

01:16.720 --> 01:21.760
I spent my head in a documentation for an open source project called Grafana Loki. So this is our

01:21.760 --> 01:28.240
log aggregation database. I do a bit with Grafana or Intempo and our other databases as well.

01:29.200 --> 01:34.400
For me as a dev advocate, I see this is where I have like most of my impact for our users.

01:34.400 --> 01:41.760
I see like the idea of going to toys and practical non-reference material really gives

01:41.760 --> 01:46.880
our community an uplift, especially our new ones, where I'm focused in my job,

01:46.880 --> 01:52.400
is bringing those new open source users in and feel like they can actually start interacting with

01:52.400 --> 01:58.320
us off where compared to some of our sort of both seasoned professionals. As well as that,

01:58.320 --> 02:04.800
I run our interactive sandbox initiative. I'm saying I run this initiative. It's me and

02:04.800 --> 02:11.600
interestingly Jack that you have here. You've seen all day and a couple of others. And then in my

02:11.600 --> 02:17.120
life I'm a big gamer, Lego enthusiast, and IoT enthusiast. And I think this is where sandbox

02:17.120 --> 02:21.760
is for me came about. I love to follow documentation, but I love to follow documentation

02:21.760 --> 02:26.960
where I'll be in practical all at the same time. I like to do stage by stage by stage and feel

02:26.960 --> 02:31.360
right by the end of it. I've actually got something, not just red, a document.

02:33.840 --> 02:40.080
So the goal for today is I want to give you sort of a level set you on my version of what I believe

02:40.080 --> 02:47.920
dev docs are as a dev role. And then what are sandboxes? And then how we scale to 9,600

02:48.160 --> 02:57.040
I think we're up to 11,000 now in total. I think we have about 2,000. We do it 2,200

02:57.040 --> 03:02.640
monthly users that constantly keep coming back for more. So it's got it's getting a bit out of hand

03:02.640 --> 03:08.080
for free people now, but we're keeping it going. And then I hope you'll be able to make your own

03:08.080 --> 03:14.400
for your own documentation or open source projects. This is our goal of open sourcing what we've

03:14.400 --> 03:21.600
built together and hopefully allowing you to bring it into your own docs. So for me, I kind of see

03:21.600 --> 03:26.400
dev docs sitting in two worlds. We have our key source of truth so you can imagine it as you're

03:26.400 --> 03:33.920
like historic book for everything that that product or project was and where it is now. And

03:33.920 --> 03:38.800
you know for me this means like this we look at Grafana for example. I should be able to look at

03:38.800 --> 03:44.320
our documentation for 11.1 and know this is exactly the state of Grafana in 11.1 and be

03:44.320 --> 03:51.920
able to reference that material. The other side of dev docs is of course a navelment. A navelment

03:51.920 --> 03:56.320
is making sure that we can on-ramp our users and get them comfortable with our software and it's

03:56.320 --> 04:01.200
our instruction manual, right? This is I've been, none of us has ever read a car manual but it's

04:01.200 --> 04:05.680
there. It's the sits in your car in that little boot there. But if you actually read it, it

04:05.680 --> 04:10.480
will maybe not tell you how to drive a car, but you'll tell you what your car did. But that's obviously

04:10.480 --> 04:17.760
gives you the enabment there. Where we sort of sit, why do a lot of work is in the enabment and I think

04:17.760 --> 04:24.800
this is exactly for me where interactive sandboxes sit. This is about unwamping our users in complex

04:24.800 --> 04:31.360
topics that's better than just reference static tutorials. I've made the circle purposefully

04:31.360 --> 04:36.560
stick in the interactive sandbox bit there and more on that in a moment and that's why we're here

04:36.560 --> 04:42.080
so that they're meant to touch. They're hugging on the key source of truth and that's where all

04:42.080 --> 04:49.680
my memes come in later on. So did we all remember our buckets and spades for this talk?

04:50.880 --> 04:54.960
Terrible joke. I've really tried, I've tried this joke a few times now and it doesn't land so

04:54.960 --> 05:03.440
I'm gonna keep trying. So what exactly is a sandbox? So it's a disposable VM that's hosted online.

05:04.240 --> 05:10.320
It's focused on building practical tutorials. So basically from start to finish you should be

05:10.320 --> 05:16.160
able to execute a particular task and we'll see an example of that in a moment and it allows you

05:16.160 --> 05:26.400
to execute and install applications, code to arrive at some former result. The benefits of this is

05:26.400 --> 05:31.600
it allows people to interactively engage with what's going on. Let's imagine you're teaching

05:31.600 --> 05:36.560
people helm for the first time. Holy crap, could you imagine just going, here's all the documentation

05:36.560 --> 05:43.840
for helm, go nuts. When these commands on your local machine without any, this person's brand new,

05:43.840 --> 05:48.160
they don't have to know anything about Kubernetes, they don't know anything about how to deploy

05:48.160 --> 05:54.480
or set all of this up on their system and we say, just try the helm docs. Well what this allows us

05:54.480 --> 05:59.440
to do is give them an environment that has these prerequisites set up and allow them to

05:59.440 --> 06:04.320
interactively click through and execute all of the code and see exactly what happens

06:04.320 --> 06:09.920
within this very sheltered environment. And that plays into the second one, it's risk free.

06:09.920 --> 06:15.600
If anything goes wrong, I haven't completely ditted my PC, I can literally just cross off the

06:15.600 --> 06:22.240
browser and then open a new one and try it again. And of course, I'd be sort of so that it accelerates

06:22.240 --> 06:27.280
the learning curve. So you don't feel like you're constantly referencing in and out of documentation,

06:27.360 --> 06:30.320
you have something tangible at the end that you can take away.

06:33.440 --> 06:40.880
Are you sure on time? So in terms of our interactive software that we use, we focused on

06:40.880 --> 06:50.800
kill a coder. We absolutely, if anyone ever use catacoder, one, one, two, so catacoder was a really cool

06:50.800 --> 06:56.640
tool. It basically allowed you to learn a series of interactive tutorials in the same way, but

06:56.720 --> 07:02.560
it unfortunately closed down. And I believe there's only two or three people working in

07:02.560 --> 07:09.520
kill a coder. From basically, all of our conversations with them. And they are working hard to

07:09.520 --> 07:15.760
basically build what catacoder is. I let you kill our coder on how kill a coder works. I think

07:15.760 --> 07:21.360
it's really cool. There's a lot of stuff behind the scenes with Kubernetes. They don't actually

07:21.360 --> 07:26.880
use container pods. They use VMs that are being hosted in Kubernetes. But this is not what

07:26.880 --> 07:32.000
this talk is all about. I would definitely let them come and give a talk about how they created

07:32.000 --> 07:36.960
this interactive sandbox land. We're talking about how we convert docs into the sandboxes.

07:37.680 --> 07:43.280
But what benefits us in Grafana is it's free for the users to use. They just have to sign up.

07:43.280 --> 07:48.000
The only reason they have to sign up is because he had a bunch of crypto miners come along and

07:48.000 --> 07:56.080
uses software to basically grind a ton of data, which was not great. It's all built and marked

07:56.080 --> 08:00.160
down, which you'll see is great for us. Grafana, all of our docs are written and marked down and

08:00.160 --> 08:04.880
live all in every single project source code. There's not a central repository for our

08:05.920 --> 08:10.560
docs. They all live in each project, which Jack will tell you is a high ache in itself.

08:11.120 --> 08:16.480
There are flexible environments. You get an event of the m by default, which has Docker and

08:16.480 --> 08:20.800
podmen, but you also have Kubernetes clusters that you can run by default as well.

08:21.840 --> 08:26.080
And then we can also do some engagement tracking, which I'll show you. This is kind of how we got our

08:26.080 --> 08:35.920
numbers. So, this is how we use it. We have our docs page. You jump directly into a completely

08:36.000 --> 08:42.640
light version of that. I'll show you a demo in a second of this actually working. You can see

08:42.640 --> 08:48.080
we basically replicate the docs over and users can start running commands directly from that

08:48.080 --> 08:54.480
docs tutorial inside the virtual machine itself. And they should be able to see each stage of that

08:54.480 --> 08:59.760
process as it goes. Hopefully, if this Docker pool, I tried to speed it up this video because this

08:59.760 --> 09:08.160
is definitely not this fast. And what you'll be able to see as well is you also have access to UI

09:08.160 --> 09:12.080
interface as well. So, all the way was a new product for us, a new open source collector. It's

09:12.080 --> 09:18.240
extremely complicated, I'll admit it. But it allows you to take complex topics and show you know

09:18.240 --> 09:29.520
UI integrations, configurations, and allow people to work for you. So, I was really excited about this,

09:29.600 --> 09:35.520
I must admit. I was so excited that I went to the docs team, Agrofana, and said,

09:35.520 --> 09:40.000
we have this really cool sandbox. I love it. Look at this. We're going to use this for the

09:40.000 --> 09:48.960
Loki getting started. And this, unfortunately, was all the replies I got, which is to give you a bit of

09:48.960 --> 09:55.200
context is all of the sandboxes that are built have to live in their own GitHub repo, which is

09:55.280 --> 10:00.960
different from the GitHub repo where we keep our actual documentation. And so, the first thing that

10:00.960 --> 10:06.560
all of our docs write is said was, where's your single source of truth then? How it what happens

10:06.560 --> 10:13.600
when we update something in the docs is our responsibility to also update the sandboxes as well,

10:13.600 --> 10:18.240
or is that your responsibility? And what about here, if you get hit by a bus tomorrow, who's going to

10:18.240 --> 10:22.960
do that? So, yeah, so these are, I actually found these memes online. I didn't have to be so many

10:22.960 --> 10:27.200
single source of truth memes, but it's quite handle X. So, yeah, by the end of it, they basically said,

10:27.200 --> 10:36.320
you can't handle the truth. So, I wasn't uninspired. This was me as soon as the rest year as the

10:36.320 --> 10:41.600
next one. I was like, I'm going to make a source of truth that is so single that no one's going

10:41.600 --> 10:49.120
to be able to like bring this idea down. And that's going to make Jack. So, I came to Jack with a

10:49.120 --> 10:54.560
problem. And so, we put together like a proposal doc and I said, the main problem that we've got

10:54.560 --> 10:59.600
is, and the main problem that we need to solve for the docs team is we want to basically say,

10:59.600 --> 11:06.720
if any changes happen in the primary docs, that these changes are replicated inside the sandbox

11:06.720 --> 11:14.240
documentation. We also have the problem that, you know, one marked down doc in kilocoder land

11:14.320 --> 11:18.320
is a series of marked down docs. And I'll show you how the structure works, but, you know,

11:18.320 --> 11:24.160
each page of a sandbox is a different marked down doc and so forth. And kilocoder also has special

11:24.160 --> 11:29.280
syntax as well, whether you want to make, you know, a particularly him command executable or

11:29.280 --> 11:40.000
copyable. So, there was a lot to do. And so, what we kind of come up with was a transformer written

11:40.080 --> 11:47.040
in Go, that all is run through GitHub workflows. And essentially what this does is basically,

11:47.040 --> 11:54.800
it waits and looks, well, sorry, runs, it runs currently on a con job, whatever, like 30 minutes,

11:54.800 --> 12:01.120
oh, we go. Runs on a static, so we might be lagging by like 30 minutes for an hour, we'll get there.

12:01.840 --> 12:07.840
But basically, it looks through each of our repositories for changes based upon the sandboxes that we have.

12:08.800 --> 12:16.160
So, whether they be low key, graphana, tempo, or mimere. And then it runs them through the automatic

12:16.160 --> 12:23.600
parser, opens, automated PR, and writes that into the kilocoder repository. And then we get all the

12:23.600 --> 12:30.560
changes for those particular docs. This was kind of like the goal, was basically that we don't

12:30.560 --> 12:36.320
have to worry anymore about seeing changes appear. I mean, you know, to be honest, there are some

12:36.320 --> 12:41.520
manual verification checks we check. We have a staging environment which I'll show you and we check

12:41.520 --> 12:46.400
that the transformer's not done anything crazy if someone started messing with the metadata or something,

12:46.400 --> 12:51.120
and you get some crazy output. And then we push everything to production. I think I pushed

12:51.120 --> 12:59.600
maybe once a day just to check, but we could automate that process as well. So, yeah,

12:59.600 --> 13:07.040
really go. I wanted it on the open source package libraries that we did use. So, Goldmark is

13:07.040 --> 13:14.400
primarily used for all the mark down passing. And it was designed specifically for Hugo, because that's

13:14.400 --> 13:19.920
how we build our documentation, because that's primarily the mark down that's generated for our

13:19.920 --> 13:26.880
docs is all written in Hugo. With that being said, as long as you include the Hugo metadata or

13:26.880 --> 13:32.400
the metadata tag at the top, it will work with any mark down file. And it is an open source project,

13:32.400 --> 13:36.720
so we can, you know, if anyone wants to contribute a raw mark down way of doing it, please contribute

13:36.720 --> 13:43.040
to the project as well. But so the idea here is what it does is we'll see an example of this,

13:43.040 --> 13:48.880
it checks the metadata. The metadata for us is the name, the description, what type of

13:48.880 --> 13:54.560
the M you'd like to host, and then you can also use some pretty crazy advanced features with

13:54.720 --> 13:58.720
reggae. So, if there's like a specific link or something that's not going to work for how

13:58.720 --> 14:06.560
killer code works, you can do some on the fly replacement in the transformer as well. So, we process

14:06.560 --> 14:13.520
the mark down itself and then we divide the content, the basically the content is divided into steps.

14:13.520 --> 14:18.320
I should say within the processing stage that we change all of our links, because we actually host

14:18.320 --> 14:23.520
obviously all of our images and stuff in our docs, but they have like a special shortcode reference.

14:23.520 --> 14:29.280
So, what we actually do is convert those into just a direct raw mark down reference to the images.

14:30.560 --> 14:35.120
When I say divide into steps, you'll see in a moment you'll see how killer code outlines it steps.

14:35.840 --> 14:42.400
And this is all broken down based upon the metadata that we include within the actual mark down file.

14:43.680 --> 14:49.280
Steps are transformed. The key goes to a shortcodes are transformed and then we write the steps to our

14:49.280 --> 14:58.240
course directory. So, here's kind of like the flow, especially if you're creating new documentation.

14:58.240 --> 15:02.880
You annotate the source code, you download the transformer or you can build it from go from

15:02.880 --> 15:09.120
the GitHub repository, you run the transformer and then you push the result. So, we do have an

15:09.120 --> 15:17.760
automated process for doing current or you know, we'll give it this. We do have a workflow for

15:17.840 --> 15:23.440
pre-existing sandboxed mark down files. But if you're creating a new sandbox from scratch from

15:23.440 --> 15:28.640
mark down, the process is kind of like handcrank. You would do this basically by pulling the

15:28.640 --> 15:33.920
repository and checking what the mark down looks like. It's by design at the moment, because if you

15:33.920 --> 15:40.240
screw up some like the metadata, then you get some wild looking mark down structures.

15:40.880 --> 15:46.000
We just need to work more on the validation of the transformer. And then you push the results to the

15:46.080 --> 15:52.160
kilocoder repo. So, I think I'll give you a demo of how the transformer works.

15:53.040 --> 16:02.160
And I'm going to do it from a kilocoder from the sandbox. So hopefully, if I come out of that,

16:07.040 --> 16:11.360
and hopefully, the internet stays on our favor here or this whole thing falls apart.

16:11.760 --> 16:20.160
So, here's our learning environment for the transformer. If you were going about this yourself,

16:20.160 --> 16:23.680
the first thing you would do is this okay is the size okay for everyone. By the way, do I do

16:23.680 --> 16:34.480
me to make it bigger? Can I get slightly? Is that better? Yeah. So, essentially, you pull the local

16:34.480 --> 16:40.320
binary. Basically, we have a bunch of binary that we just build, depending upon your OS and

16:40.320 --> 16:44.000
Mac windows. We actually tested it works on windows, which was quite surprised, because we don't have

16:44.000 --> 16:50.720
everyone running windows. And then we make the transformer executable.

16:52.720 --> 16:59.200
For us, we have our kilocoder repository, so I'm going to pull that. And in our kilocoder repository,

16:59.200 --> 17:04.800
this is where we host all of our sandboxes. And I can quickly show you what that looks like.

17:05.760 --> 17:10.640
So, here we are. Here's all of our sandboxes. And they kind of live in a directory structure.

17:10.640 --> 17:17.200
So, if we look at Loki, you can see all of the sandboxes that we have. So, you know,

17:17.200 --> 17:23.120
intro to ingesting with O-Tail, K8's monitoring, and so forth. And what you'll see below that

17:23.920 --> 17:28.800
is the actual structure. So, step one, step two, step three, step four, and step five. And this is

17:28.800 --> 17:31.920
kind of the structure that we're hoping to pass on marked down into.

17:31.920 --> 17:40.480
So, if I jump back, the first thing that we're going to do is check out a new branch.

17:42.560 --> 17:49.120
And then this is some of the metadata syntax that you need to annotate your files with,

17:49.120 --> 17:55.920
in order to basically tell the transformer how you wanted it transformed. And so, just to give

17:55.920 --> 18:02.480
you an idea of what that looks like. Let me jump into the editor view. What I love about

18:02.480 --> 18:07.920
kilocoder is also how the VS code implementation as well. So, you can basically use the structure

18:07.920 --> 18:15.440
like you would like on your local system. And if I look at one of our examples, I do a complete

18:15.440 --> 18:21.920
doc's example. Oh, you're going to give me the, I just wanted the raw marked down.

18:25.840 --> 18:32.800
Okay, back up, go through the VS code. So, you can see the structure and metadata at the top.

18:33.440 --> 18:37.840
You can see that we've said, for kilocoder we want the title to be this, the description.

18:37.840 --> 18:43.360
And in the back end, we're going to use a Kubernetes two node image that kilocoder has.

18:43.920 --> 18:50.720
The next thing that you'll notice is the, the metadata that we do to basically break up the tasks

18:50.720 --> 18:57.920
into steps. So, interactive page intro.md start basically says, within this, I want you to

18:57.920 --> 19:05.920
basically separate this into the intro marked down for that sandbox. So, if I scroll down the way,

19:06.000 --> 19:10.800
also, you, oh, yes, even of course. Is that a bit better?

19:15.200 --> 19:21.520
Look at that. And you can see we also have m tags. So, anything between the start and the end will

19:21.520 --> 19:27.680
be included in that intro.md. We do have other metadata. So, if there's certain things you want to

19:27.680 --> 19:32.160
ignore, within the marked down, you can do things like interactive ignore. And then anything within

19:32.240 --> 19:38.480
those blocks will not be included in the final sandbox as well. And we also have the ability to

19:38.480 --> 19:44.560
not include things in our docs, but include them in the sandbox as well for those specific use cases

19:44.560 --> 19:49.360
where there might be commands that you need only within the sandbox versus out with as well.

19:51.360 --> 19:56.480
So, this is kind of what the marked down page will end up looking like once you've annotated it.

19:56.480 --> 20:04.000
And let me swap back to our trustee sandbox and jump back into the editor. If I scroll down and go

20:04.000 --> 20:12.480
next, check in time, I can grab it on with our questions. What we can do from here is we can

20:14.320 --> 20:22.240
CD into kill a coder by yourself. Sweet, make a new directory, make a new course, we'll touch

20:22.320 --> 20:27.840
a structured JSON, but we'll see in a moment. And then essentially what we've done here is we've

20:27.840 --> 20:35.520
then transformed this completed docs example into a new course. And if we do an LS on this new course,

20:35.520 --> 20:41.280
you can see a transformed that single marked down page into the structure of step one, step two,

20:41.280 --> 20:47.440
and step three. And this basically kill a coder attaches onto your GitHub repository

20:48.320 --> 20:53.120
for this. So our as is graphana fast kill a coder and we'll generate the sandboxes on your

20:53.120 --> 20:58.800
behalf, no need to do anything there. And right, since I've got five minutes left, I'm going to

20:58.800 --> 21:04.880
speed run this last bit. Just a you guys can get up and running and we can get some questions in

21:06.800 --> 21:14.480
I even had that sightseeing time is running out. So here's a transformer repo. This has everything

21:14.480 --> 21:21.280
that you need. It's under tools. If you'd like to try it yourself, there's also a bunch of

21:21.280 --> 21:26.720
examples and documentation on how to use the transformer there as well. So yeah, definitely give

21:26.720 --> 21:30.480
it a go. See what you think, leave us any issues. There's definitely things that we know about

21:30.480 --> 21:34.880
that we're trying to add slowly over time. But yeah, definitely leave us issues if you find them

21:34.880 --> 21:42.240
for your own documentation. This is how this is that sandbox I showed you to running the transformer.

21:42.240 --> 21:47.680
So if you like to try it yourself and learn how to use a transformer, you can follow to that

21:47.680 --> 21:56.240
sandbox there. And lastly, I just wrote for my own self-worth here. Here's a one of the tutorials

21:56.240 --> 22:02.720
that I worked on in Loki and this shows you kind of how we host it and you can see how our documentation

22:02.720 --> 22:10.240
is replicated over to the kill a coders. And lastly, this is kind of how it's going. These are our

22:10.240 --> 22:19.600
stats. So the project itself is in my expectation. It's been pretty wild actually. I thought we'd

22:19.600 --> 22:24.160
get maybe sort of 500 people a month, like people that didn't feel like they could do everything

22:24.160 --> 22:32.000
on their own laptops. But I haven't got updated this image, but we're up to 2,200 now for the end

22:32.000 --> 22:37.760
of January. So it's pretty crazy. So we have returning people come back and the fact that they

22:37.760 --> 22:43.520
have to sign in and then purposefully click on a sandbox proves that they actually want to take

22:43.520 --> 22:48.960
part rather than just clicking a link and going, I didn't really get there. With our app being said,

22:48.960 --> 22:52.880
there are things that we want to do to monitor further. We want to know how far they get if they

22:52.880 --> 22:57.840
get stuck, etc. But all that's to come. We're going to think about how we can do like a monitoring

22:57.840 --> 23:05.040
agent for that. And yeah, that was my speedrun to the end. Thank you for attending. Do you have any

23:05.040 --> 23:16.720
questions? Yes. Are you running killer coin under self or you're using killer coin or like

23:16.720 --> 23:21.280
it's an open source project that's has like a sound version or how does it work?

23:21.280 --> 23:26.400
Yeah, so I've got just to repeat your question for the, so basically you're asking if we're hosting

23:26.400 --> 23:34.080
killer code ourselves. So killer code are is hosted by a bunch of great developers that they wanted

23:34.080 --> 23:39.440
to replace catacoda. They have a fantastic blog on how they hosted themselves and running it.

23:39.440 --> 23:45.840
We work regular with them. The way we obviously want to, as a company, contribute to them more.

23:46.720 --> 23:50.880
At the moment, the way they do everything is you as a creator, as a matter of if you're a company

23:50.880 --> 23:57.680
or if you're just a one person, you all contribute in the same way. So I think we're one of the

23:57.680 --> 24:04.000
largest contributors now of killer coder sound boxes. But you know, the only way we can pay them

24:04.000 --> 24:09.520
is through like a subscription to say, hey, here's 999 a month. We really rate what you're doing,

24:10.240 --> 24:14.640
but we would obviously like to support them better. But their usage model works by

24:15.920 --> 24:22.400
they do a lot of training for Kubernetes certifications in CNCF and that's kind of their approach.

24:22.480 --> 24:25.760
They charge for, you paid, yeah, on that.

24:25.760 --> 24:29.360
But it's also open source. So if you want to, you could run it yourself.

24:29.360 --> 24:34.720
In terms of the, our transformer itself is open source, killer coder itself. I don't know

24:34.720 --> 24:40.000
specifically. They give you kind of like the background of how they've done it. But I don't know if

24:40.000 --> 24:44.560
killer coder itself is specifically open source. But yeah.

24:45.440 --> 25:00.560
Yes. Yes. So they host them. And so we basically just go directly to their site and it spins them up for us, yeah.

25:01.360 --> 25:05.360
Yeah. Yeah.

25:20.640 --> 25:22.160
Jack, could you like to answer that one?

25:22.480 --> 25:24.160
Sorry. Sorry.

25:41.760 --> 25:43.760
So they don't can make two.

25:43.760 --> 25:49.040
Yes. So are you asking is the documentation source file format restricted to mark down

25:49.040 --> 25:55.360
in a specific form at the moment? Or yeah. Yeah. So at the moment it is marked out only. Oh,

25:55.360 --> 26:02.960
sorry, you might need to say this. It's marked out. But in theory, going back to the earlier

26:02.960 --> 26:07.200
ASCII doc talk, if there's a specification for your language, there's a parser for it. We could

26:07.200 --> 26:15.040
apply the same concept. The actual transformer tool came together in days. It wasn't, it wasn't a

26:15.040 --> 26:21.840
huge effort. So we could add transformations for ASCII doc for sure. And we would love to extend it

26:21.840 --> 26:26.560
to make it more useful for other people. Yeah.

26:40.560 --> 26:44.800
Yeah. So at the moment, we talked with the idea of saying, sorry,

26:44.800 --> 26:48.160
so I keep forgetting to repeat the question. But basically, the question was around the

26:48.160 --> 26:53.920
metadata that we host in the source documentation. Is there something that the writers have to

26:53.920 --> 26:58.560
apply in order to transform their docs? And the answer is, yeah, and we kind of toyed around doing

26:58.560 --> 27:03.680
more automatically, say, could we break each step out into like a H2 and mark down? So we said, like

27:03.680 --> 27:10.960
step ones are for every, you know, H2 that we have. But what we thought was, you want to be more

27:10.960 --> 27:16.800
explicit than that. So we said, at the moment we say, everything within this, these given barriers,

27:16.800 --> 27:23.680
step one is step one and then everything in these giving barriers are step two. But yeah, in general,

27:23.680 --> 27:28.720
we could probably speak to, is it too much over heads at the moment? I think once you've done it

27:28.720 --> 27:33.520
once or twice, then it's just a matter of copying from a previous Mark file, Mark down

27:33.520 --> 27:38.960
file that you've done before. I think the only thing that I would say we give as a drawback is,

27:38.960 --> 27:44.640
obviously, now you've got a bunch of HTML annotation inside your Mark down, it does convolut

27:44.640 --> 27:48.800
a little bit if you've got loads and loads of steps. So there are some best practices to make sure you're

27:48.800 --> 27:56.000
not over, you know, lurking your, your raw Mark down documentation. But it's I think to think about,

27:56.000 --> 28:04.800
we could look at doing it on a pair, head of bases. Yeah, yeah, yeah, yeah, yeah, yeah, yeah, oh,

28:04.800 --> 28:13.440
sorry, sorry, sorry, there you go, yeah. Thank you very, very much. Thank you so much.

28:13.440 --> 28:19.200
I would specifically like to thank the organizers who are here, Jeff, Chris, and Chris Thuff,

28:19.200 --> 28:23.920
and Robert Connecology, who was here. Thank you for being part of the two of the Doctor

28:23.920 --> 28:28.880
Room, and spread the word, bring presentations next year, before the organizers next year,

28:28.980 --> 28:39.360
So yes, thank you very much.

28:40.720 --> 28:42.860
Oh, yes.

28:43.500 --> 28:46.280
Yeah, this was the final really big news.

28:58.880 --> 29:00.880
You

29:28.880 --> 29:30.880
You

29:58.880 --> 30:00.880
You

