WEBVTT

00:00.000 --> 00:08.760
Brilliant, okay. Well, hi everyone. It's nice to see you. This is my first

00:08.760 --> 00:13.600
fostum, so I'm learning a few things. It's very, very friendly so far, so please don't

00:13.600 --> 00:19.600
change that. This torque represents a very similar torque that was given at

00:19.600 --> 00:23.120
Jupiter-Con. I don't know if anyone here has been to Jupiter-Con before, but if

00:23.120 --> 00:26.200
you were there and you saw that torque and you think it was better the first time

00:26.200 --> 00:30.800
around, I'm really sorry, don't tell me. So I have a few questions for the

00:30.800 --> 00:35.680
audience before we start, just for my benefit. Who has heard of a project called Jupiter-

00:35.680 --> 00:42.680
Book? Interesting, okay, cool. Who's ever been interested in designing web apps?

00:42.680 --> 00:49.320
Okay, also cool. Who's a content author or a researcher or anyone who might think

00:49.320 --> 00:53.600
they could fall under that bracket? Okay, that's, well done, that's exactly the

00:53.760 --> 00:59.880
I was hoping for. So last question, who believes it was a really bad idea to

00:59.880 --> 01:03.400
wear a turtleneck before giving a fostum torque in a rim of this temperature? That

01:03.400 --> 01:08.440
would be me, but we're here now, so. Right, so hi, I'm Angus. I've been in open

01:08.440 --> 01:13.360
source in some lurking capacity for over 15 years. After finishing my physics

01:13.360 --> 01:17.160
PhD, I moved into software development full-time with the research software

01:17.160 --> 01:20.720
engineer, although at the time I didn't know that's what it was called, and I'm now

01:20.720 --> 01:25.240
in applications and infrastructure engineer as an organization called 2ITC. So I

01:25.240 --> 01:29.120
won't be speaking much about 2ITC today, but if you've heard of my binder or Jupiter

01:29.120 --> 01:33.760
Hub, 2ITC are a non-profit that are heavily involved in these projects, and we as

01:33.760 --> 01:37.960
part of our work with communities, we do a lot of upstream work, and our job is to

01:37.960 --> 01:41.680
provide the communities that we work with, a digital home. So that's all I'm going to

01:41.680 --> 01:45.440
say about Jupiter Book. Sorry, no, that's not all I'm going to say about Jupiter Book.

01:45.440 --> 01:49.800
That's 2ITC, and like finally, because I use Nix OS, I have to declare that

01:49.800 --> 01:53.120
publicly. They tell you that when you start using it. So there we go. This is why I

01:53.120 --> 01:59.600
offer my demos, bro. Okay, there we go. Right, cool. So at a high level, Jupiter

01:59.600 --> 02:04.240
Book is a tool that enables you to take collections of documents like notebooks or

02:04.240 --> 02:08.960
markdown files and build them into a nice user-facing book-like experience.

02:08.960 --> 02:12.560
We kind of say it in the long form, which is that it lets you create enriched and

02:12.560 --> 02:17.360
interactive multi-document computational narratives, which is an absolute mouthful.

02:17.360 --> 02:20.240
So I'm going to talk to you a little bit about the current iteration of Jupiter

02:20.240 --> 02:23.680
Book, and we'll give you a bit of a sense of the journey that it's taken, and we'll

02:23.680 --> 02:29.800
get into more of the details as we go. So here is an example of a Jupiter Book with a

02:29.800 --> 02:33.480
community that we work with called Project Pithia. I really encourage you to look at it.

02:33.480 --> 02:37.560
It's a really interesting project, and I'm not just saying that. But crucially, Jupiter

02:37.560 --> 02:41.960
Book lets you take a collection of documents of documentation, which is what we have here,

02:41.960 --> 02:46.200
and assemble it into something that has a more natural reading experience.

02:46.200 --> 02:55.000
Okay, cool. So Jupiter Book's quite old now. It's been around for a good number of years,

02:55.000 --> 02:59.240
and it's gone through quite a few different evolutions. It started off with a tool that

02:59.240 --> 03:04.040
involved using Jackal in a pretty hacky-templating system to produce the content, and it

03:04.040 --> 03:08.320
went through a really big redesign, which was a grant-funded project, where it was built

03:08.320 --> 03:11.920
as a basically a distribution of sphinx, where there's an ecosystem of sphinx extensions,

03:11.920 --> 03:16.600
and at the end of it you would get what we used to now call Jupiter Books. And most Jupiter

03:16.600 --> 03:21.080
Books in the wild up till now have been these. There are still quite a lot today that are

03:21.080 --> 03:24.960
not using the latest version of the stack, which I'll talk to you about in a minute. But what

03:24.960 --> 03:30.640
I'm here to talk to you about today, if I try and switch sides, is this bit? So Jupiter Book

03:30.640 --> 03:36.560
2 was released in October, and we talked about it at JupiterCon. It's a whole new text stack.

03:36.560 --> 03:40.560
We don't use sphinx anymore. Lots of things are similar, something's a different, and

03:40.560 --> 03:46.480
I'll touch on a few of those today. Okay, get my step count in.

03:46.480 --> 03:47.480
What?

03:47.480 --> 03:50.480
If you off-camera, if you cross the line, the lines of the thought.

03:50.480 --> 03:51.480
Say again, sorry.

03:51.480 --> 03:58.240
The part of the room that's in camera, the camera over there, is in the, so if I want to

03:58.240 --> 04:03.600
make real gestures, it's over there, and then okay, cool. So one of the last things to

04:03.600 --> 04:07.000
say is we've gone through quite a big social change as well, and it's really important

04:07.000 --> 04:09.960
to think about the social parts of the project, and I'm really glad that the last speaker

04:10.040 --> 04:15.880
was basically talking quite a lot about that. We've gone from different organizational structures,

04:15.880 --> 04:19.400
different team members, and I will touch upon that later, but just wanted to call it out

04:19.400 --> 04:22.920
that that is not just the tech that's changed along the way.

04:22.920 --> 04:29.800
So next, describing the motivation reasons for how we got here, the one of the big gaps

04:29.800 --> 04:35.000
that we felt in Jupiter Book and in the wider ecosystem is the gap between the exploratory

04:35.080 --> 04:39.880
and the learning phase of doing research and of being a scientist or other sort of affiliated

04:39.880 --> 04:43.640
profession, and getting to the point where you're going to communicate that with your peers,

04:43.640 --> 04:47.800
whether that's sort of in an informal sense that you're publishing in an informal manner,

04:47.800 --> 04:51.400
or whether they're actually publishing to a journal, and anyone who's tried to publish to a journal

04:51.400 --> 04:56.440
using Sphinx before knows how painful that is, and so that's part of the technical and social

04:56.440 --> 05:02.200
reasons why we're here today. Finally, if anyone finds us, I'm going too fast because I've

05:02.200 --> 05:05.960
got really excited. Please raise your hand and I'll take it as a hint to slow down.

05:08.200 --> 05:14.360
So in order to talk about this topic, I'm going to break down the sort of space of personas

05:14.360 --> 05:18.360
into three different personas that we might imagine when we're thinking about publishing,

05:18.360 --> 05:23.240
about content, about science. So firstly, we have the learners and the learning communities,

05:23.240 --> 05:28.520
and these are people who need to gain new insights, to gain new skills, to learn the tools of

05:28.520 --> 05:32.680
their trade, and usually we think about undergraduates, but this is a very restrictive view of

05:32.680 --> 05:37.240
what is a very wide persona. Once these people have gained these skills, they've got their

05:37.240 --> 05:41.800
networks, they've started to integrate themselves into the researching sort of portfolio.

05:41.800 --> 05:47.640
We then think about research communities, and these are people who are becoming explorers and

05:47.640 --> 05:52.760
researchers and collaborators. They have people that they work with, they have science that they're doing,

05:52.760 --> 05:56.040
and they are building upon the skills they build from this previous section.

05:56.440 --> 06:01.720
Typically, these personas are coming up with their own experiments and their own ideas.

06:01.720 --> 06:05.960
There's a lot of idea generation happening in this middle phase. And then finally, we have

06:05.960 --> 06:10.440
the scientific communication phase. You've created something polished or not as most of my

06:10.440 --> 06:14.840
publication would have been, and you want to share it externally or formally with your peers.

06:14.840 --> 06:20.200
You want to communicate it crucially using the same tools. Anyone who's done publications before

06:20.200 --> 06:23.160
will know that you might have a tool chain that you use all the way up to the middle,

06:23.160 --> 06:27.880
and then suddenly you have to learn later, like the final year of your PhD, depending on who you are.

06:27.880 --> 06:32.200
So, we really want to recognize that that is a big jump in the technical stack that people are

06:32.200 --> 06:36.920
using, and we want to try and, as a Jupyter book project, make that easier. So, we want to

06:36.920 --> 06:42.040
single tool chain. If I can come up with a catchphrase that can realize the goal of having an

06:42.040 --> 06:49.240
entire knowledge creation life cycle captured within its remit. So, oh, look at that, Mr is an ecosystem

06:49.240 --> 06:54.680
of tools and standards designed to meet. These needs, here we go. So, the idea is that the

06:54.680 --> 07:00.520
missed project or the missed ecosystem comprises tools and standards of composable building blocks

07:00.520 --> 07:04.040
that come together to serve the different parts of that life cycle that I just showed you.

07:04.680 --> 07:11.000
If anyone was in the, which talk was it, there was a talk yesterday that was on Dock Speck

07:11.000 --> 07:14.680
or something like that that talked about Dock and ASTs. If you happen to have been there,

07:14.680 --> 07:18.840
it's very relevant to this, and I'm keen to meet up with the author later, but for now,

07:19.160 --> 07:24.920
there's an interesting aside. So, Dock book crucially does three things when you run a build on a

07:24.920 --> 07:29.880
Jupyter book project. It parses in resolves all of your documents, so if you have input documents

07:29.880 --> 07:35.560
like mark down files or Jupyter notebooks, it takes them, it reads them and ingest them, and then

07:35.560 --> 07:40.280
produces an internal representation called the missed AST. Now, that's always the way that these

07:40.280 --> 07:45.320
sorts of tools work. What's different about Jupyter book, too, is that the missed AST is considered

07:45.320 --> 07:51.240
an asset that we care about. It's versioned, it's schemered, it's shared, and it's a structured representation

07:51.240 --> 07:57.400
of your documents. I think one of my jobs in this talk is make everyone hear care about AST,

07:57.400 --> 08:03.160
which I think is an uphill battle, but I'll do my best. And then finally, once we have this AST

08:03.160 --> 08:06.680
across all of the different documents in your project, so you might have different pages in your site,

08:06.680 --> 08:12.360
for example, we then want to render and export them out into your target format. That might be

08:12.360 --> 08:17.560
a website that's interactive to new users. It might be a PDF that's being published in a journal,

08:17.560 --> 08:21.960
and you can imagine, from those two statements alone, there's quite a lot of things to think about

08:21.960 --> 08:27.800
when you go from the AST into the rendering step. The benefit of having these separate phases

08:27.800 --> 08:33.240
amongst other things is that we have different extensibility points, so you can change how the

08:33.240 --> 08:37.640
documents are passed and you can add new features there. You can modify what happened when we have

08:37.640 --> 08:42.040
these documents and do interesting things. So for example, Jim from the cheering way, who's one of

08:42.040 --> 08:50.920
the organizers of this session, he don't think he's here. He added a plugin that he had a plugin that

08:50.920 --> 08:56.200
makes it possible to check, do your images have alt texts for an accessibility checker. And those are

08:56.200 --> 09:00.360
the kind of things you can do on a structural level by having an AST that you sort of share and build

09:00.360 --> 09:06.840
tooling for. It's the advice to say, you can also extend the final part. That's sort of a given,

09:06.840 --> 09:12.760
you can have different templates, you can have different PDF themes, and I'll talk more about that in a

09:12.760 --> 09:17.880
minute. So to build a new stack here with the guiding principles, we wanted to make something

09:17.880 --> 09:22.680
that was simple to extend and easy to use. We wanted the content to be canonical and machine

09:22.680 --> 09:26.840
readable. I love the word canonical, but ask me what it means, and I'll change my answer depending

09:26.840 --> 09:31.480
on the time of day. It does have a meaning, and then content should be modular and composable,

09:31.480 --> 09:35.400
which sort of connects to number two and will come on to that very shortly, and then computation

09:35.400 --> 09:40.520
should be a first-class citizen. I come from physics, and I'm sure most people have a connection

09:40.520 --> 09:43.960
with computation given that we're here, so computation is a first-class citizen. It's not

09:43.960 --> 09:48.600
something you do sort of as a bolt on or on a side. And then finally and most importantly, and I'm

09:48.600 --> 09:52.520
not saying that because of the last speaker, it should be governed by an open community.

09:54.680 --> 09:59.480
So these are our goals, feel free to ask me whether we've achieved any of them, and this is the

09:59.480 --> 10:03.960
first one. So Mr. Superpower should be this easy to use and simple for users to extend.

10:04.920 --> 10:09.240
The goal is to be simple and approachable for someone without a ton of technical expertise,

10:09.240 --> 10:13.720
but with the capabilities to extend into those for new use cases and bespoke needs.

10:15.880 --> 10:22.360
Easy to use. Document format. Everyone goes to mark down. It's ubiquitous. It's used everywhere.

10:22.360 --> 10:26.600
It's not used by the same dialect everywhere, which is really annoying, and I'm not going

10:26.600 --> 10:29.800
to tell you that we didn't create a new format of mark down for Geewed to Book because we did.

10:30.120 --> 10:36.440
And that's a good thing. But we start there, right? So here's regular common mark mark down,

10:36.440 --> 10:41.800
and it has mentioning features. You have title, italic text, bullet points, block quote, math, etc.

10:42.760 --> 10:47.960
And it's supported all over the place, but when you try to do more than this, it gets a bit tricky.

10:47.960 --> 10:54.040
So we can render this in HTML and look pretty nice. But imagine that you want to, for example, add

10:54.040 --> 10:58.440
a figure. So here's some common mark that represents a scientific paper, and you've got a figure

10:58.440 --> 11:03.640
one that corresponds to a graphic with a caption. To actually do this, you need to take what is

11:03.640 --> 11:08.840
a semantic concept of a figure and render out into mark down yourself. So you can't say that this is

11:08.840 --> 11:12.760
a figure with a caption what you actually often do is create an image node, and then below it,

11:12.760 --> 11:16.840
you put some italicized text with a figure one written there. And that works really well, but there

11:16.840 --> 11:20.680
are some challenges with it. Firstly, if you add a second figure above it, now you've got to remember

11:20.680 --> 11:25.640
to redo all the figure numbers, which I never did. And secondly, there's no real

11:25.640 --> 11:30.280
tool-level information here that what this is is a figure, and that's a more nuanced point that

11:30.280 --> 11:36.280
we'll get on to in a minute. So I'm just going to make my speaker note to not size 105. There we go.

11:37.320 --> 11:41.080
I think I've covered everything. Yep, so mainly this is fine, but it's not good enough.

11:42.040 --> 11:48.120
So mist mark down, we'll have a note. Mist mark down is a evolution of common mark. It's a

11:48.120 --> 11:51.400
super set of common mark, which means that we do all of that, but we also have some additional

11:51.400 --> 11:55.720
features. And one of the ones that I'm going to point to you is, oh, we have in line math,

11:55.720 --> 12:00.440
brilliant. That's not very exciting. What is exciting is we have block-level math as well. This is

12:00.440 --> 12:06.280
a directive node. If you've heard of MDX, it's kind of like an MDX component. If you've heard

12:06.280 --> 12:10.920
of programming, it's kind of like a function. And so here what we're doing is describing block-level

12:10.920 --> 12:16.760
content, and it has a name, it has an option that's been passed in called label, and it has a body,

12:16.760 --> 12:21.320
which in this case is a math expression. But it's not limited to to that. So that you can

12:21.320 --> 12:27.240
see this as one way that we can build extensible reusable building blocks. And we have quite a few

12:27.240 --> 12:31.240
things here, so we've got a math directive. Now here's the figure that I was referring to. So

12:31.240 --> 12:37.640
figure, we have a name, an image, some formatting information, and an exception. I can then reference

12:37.640 --> 12:43.320
that figure in my prose later on, and it will do interesting things I'm going to show you. So

12:43.320 --> 12:47.080
having that semantic information from that's a figure, and it's got a label, it's already enabling

12:47.080 --> 12:52.680
us to do interesting things. And we actually use the same syntax for citations. You can see over here,

12:52.680 --> 13:00.920
here's a citation in a bibliography, and that's using the same lexical approach to build that citation.

13:03.000 --> 13:10.280
There we go. So because this AST is enriched, if I have a link to a citation, I can hover over it,

13:10.280 --> 13:14.760
and if I have a link to a figure, I can hover over it, and it brings the content, that's not

13:14.760 --> 13:22.600
very useful. It brings the content into the foreground, here we go. So I'm talking about something here,

13:22.600 --> 13:26.360
and usually the context of where I'm talking about something is really important. If you have

13:26.360 --> 13:29.800
a hyperlink, I don't want you to jump away and go and read that page, because then you'll

13:29.800 --> 13:33.400
lose the context of where you've come from, and usually I'm embedding a conversation about

13:33.400 --> 13:38.680
figure in some wider prose. So the useful thing with these hover references is that they are

13:38.680 --> 13:42.600
local, so you don't have to move away from where you currently are to learn more about the figure.

13:44.760 --> 13:50.600
So another super powerful myth is that it's a canonical and machine readable. So every missed page

13:50.600 --> 13:55.400
has adjacent equivalent, and you can go onto that with curl or whatever your favorite utility is,

13:55.400 --> 13:59.720
and you can look at the structure of the page. So we have lots of metadata here, like your title,

13:59.720 --> 14:04.440
and your authoring, and your licensing, and we also have important stuff like what is the content

14:04.440 --> 14:09.240
of this page in a structured way, and that's really excited from a reuse and sharing standpoint.

14:09.400 --> 14:17.160
I've already said I'm going to make you care about AST. The first step to doing that is that once

14:17.160 --> 14:21.800
you have this AST, you can then do interesting things with it, so you can export to different targets.

14:21.800 --> 14:26.280
You could build through a PDF or Word document or a late-tech document. You could also build

14:26.280 --> 14:31.240
to type it. You could also publish a website, like I've just shown you, or author to publish to a

14:31.240 --> 14:35.560
journal. There are lots of different ways that we can reuse this, and it's because we have an AST

14:35.640 --> 14:40.840
at the center. There are lots of templates that could mean the members of author to target different

14:40.840 --> 14:45.560
journals and different formatting styles, and that list is getting longer by the day.

14:47.720 --> 14:52.520
So here's an example from a company called Curve Note. They are members of the

14:52.520 --> 14:57.000
Jupiter organization, and they are heavily involved in the early development of missed. They

14:57.000 --> 15:03.720
worked with Cypai in the last couple of years to digitize all of, oh, not digitize, but to massage

15:03.800 --> 15:10.200
all of their proceedings into this format. If you go to Cypai proceedings, oops, that's too quick.

15:10.200 --> 15:17.720
If you go to Cypai proceedings, you can see. Yes, we've got all of the, I think 18 years, I'll say

15:17.720 --> 15:22.760
we, they have got all of the 18 years of proceedings in this format. I think it's over 1000 articles,

15:22.760 --> 15:28.520
and they will serve under this one, they are all served under one front-hand interface.

15:29.480 --> 15:33.560
So you can browse through, and because these are sort of digital artifacts, they can embed

15:33.560 --> 15:38.280
interesting things like figures and plots that you can actually drill down into and learn more about.

15:38.280 --> 15:41.880
This is kind of only scratching the surface, but you can already see how like having a medium

15:41.880 --> 15:46.280
that you're intentionally publishing for is really powerful from a exploratory perspective.

15:51.080 --> 15:56.680
Here's the Cypai proceedings template. I think it's very pretty objectively, and this has

15:56.680 --> 16:01.080
made pot of having a template that we've built to from the missed AST, and I'll talk more about

16:01.080 --> 16:05.080
the detail in a minute, but if you're targeting typist, which I think this template was,

16:05.080 --> 16:08.920
it takes one order of milliseconds to build that PDF rather than the minutes you're familiar with

16:08.920 --> 16:15.560
latex makers, etc. No shame on latex make, by the way, got me through my PhD. So this super

16:15.560 --> 16:21.800
path number two is that it's modular and composable, so content modularity is kind of nuanced,

16:21.800 --> 16:26.840
but the idea is that if you have cross references and hover references, we can hover over them and

16:26.840 --> 16:32.280
bring them into the local content and contexts, sorry, to explore them. So for example, here are

16:32.280 --> 16:38.360
cables that are highly detailed, and then you can also have citations that refer to your bibliography.

16:39.640 --> 16:45.080
And these are all internal references. What's also more exciting is that same mechanism will work

16:45.080 --> 16:49.640
for external references. So you can imagine that if different people from different communities

16:49.640 --> 16:55.960
publish their sites as a bit missed sites, as Jupiter book sites, then it is possible with

16:55.960 --> 17:01.800
these into this new tooling to embed or hover over references to that content in your own.

17:01.800 --> 17:07.240
And the goal here is to think about, there we go, the goal is to think about federating content.

17:07.240 --> 17:10.680
So you can talk about distribution content across multiple different providers,

17:10.680 --> 17:14.680
and instead of having to copy and paste a figure into your paper to say, oh, this person did something

17:14.680 --> 17:18.760
cool, you just embed it in all of the citation and attribution metadata should be there.

17:18.840 --> 17:23.320
Now that is a goal, we haven't got all the attribution done yet, but for now you can certainly

17:23.320 --> 17:27.640
embed and hover preview things some other people's resources. And what this video was showing is that

17:27.640 --> 17:32.840
there's a, I think this is a kind of project-pithy cookbooks, no, this one isn't, but effectively you

17:32.840 --> 17:37.160
can have, I'll show you the proper one, you know, you go, project-pithy here.

17:39.080 --> 17:44.280
Here is, they had project-pithy had these tutorials called cookbooks, and the idea is that you can do

17:44.280 --> 17:49.080
sort of specific analyses here and share them. But all of these analyses are kind of doing the same

17:49.080 --> 17:53.240
thing in certain context, they all need to run on a Jupiter hard, and they always do x, y, and z.

17:53.240 --> 17:57.720
And so what you can do is the authors of project-pithy here can basically publish a guide,

17:57.720 --> 18:01.560
and then that guide's material can be embedded and referenced in these cookbooks when they're

18:01.560 --> 18:06.120
providing guidance for how do I set up a virtual environment or how do x, y, and z. And that's

18:06.120 --> 18:09.800
a moving target we'd love to do more on. I'm rushing through it because I'm aware I'm probably

18:09.800 --> 18:12.680
short for time, but please do asking about that at the end if you're interested.

18:14.680 --> 18:18.520
Computation being a first class citizen is something that we're thinking about all the way through

18:18.520 --> 18:24.840
the Jupiter stack. So this includes Jupiter lab as an editor. We want to try and blur the lines

18:24.840 --> 18:30.280
between code cells and mark-down cells, for example, so that you can have a mark-down cell that defines

18:30.280 --> 18:35.240
some code that's coming from a code cell. So I think down here we have a widget in-line in some

18:35.240 --> 18:40.840
text and we have a computed expression that comes down here later on. The idea is just to sort of

18:40.840 --> 18:45.160
play around and see what happens if you think less about a linear thing of blocks and more about

18:45.160 --> 18:49.480
a document that can live and breathe. Jupiter lab missed needs a bit more development work in the

18:49.480 --> 18:54.680
last couple of months, and that's one of my projects, but the goal here is to think about how we

18:54.680 --> 19:00.680
can reduce the barrier to interactive and rich experiences. Here's an example from microscopy,

19:00.680 --> 19:04.600
static figures aren't great. If you can drill down to them and you can actually zoom in and switch

19:04.600 --> 19:08.920
the column apps, etc. You can learn a lot more than a printing seven figures out statically in a

19:08.920 --> 19:14.120
PDF scan, and so it's really worth thinking about how you can lean into embedded and rich experiences

19:14.120 --> 19:19.400
and publishing for this kind of target. Some people have deployed compute resources like

19:19.400 --> 19:25.240
jute hubs and binder hubs and project pithia is an example, and project pithia cookbooks, for example,

19:25.240 --> 19:29.480
some of them can run on a binder hub, so here if we take the power button it's going to connect and

19:29.480 --> 19:33.400
spin up a binder instance, it's going to run the jute decernal for the current document,

19:33.400 --> 19:37.720
it's going to compute all of the cells and provide you with any rich interactive figures that

19:37.800 --> 19:42.280
might be there, and this is really useful from the idea of reproducible analyses that people

19:42.280 --> 19:47.080
can actually test out and share, and there are lots of nuances here again, I'm going to skip over them,

19:47.080 --> 19:50.920
but suffice is that it's really fun being as press a play button on the website, and that's the

19:50.920 --> 19:56.920
main reason we all do this, so there we go. Another mystery part is that it's super easy to use for

19:56.920 --> 20:02.840
developers to extend, so here's some very quick examples. I'll see you in turn, I think with

20:02.840 --> 20:07.240
curve note, created as ammo bar on the right hand side, every time you click on a figure,

20:07.240 --> 20:10.840
it has this trailing list of figures on the right hand side because you might argue that the

20:10.840 --> 20:17.080
figures are the foreground of the paper that you're reading. This was done by the fact that

20:17.080 --> 20:22.840
missed is built in two ways, I'm kind of talking about here, but it's got the JSON state that's

20:22.840 --> 20:27.320
the documents, and then it has this renderer that's currently a React front end, and that renderer

20:27.320 --> 20:31.320
can consume that state and render a different context, so you can either modify the renderer

20:31.320 --> 20:36.680
to do more things, or you can bring it into another context, so here, for example, is a website

20:36.680 --> 20:41.160
time that someone has embedded some section of missed in because they're just pulled in the

20:41.160 --> 20:44.760
React components and they're rendering the document there, and there's all kinds of things from

20:45.480 --> 20:51.480
CDNs and galleries that you can imagine doing with the ability to pull in parts of a published

20:51.480 --> 20:58.520
duplicate book site somewhere else. Sometimes you want to pull in bespoke visualization, so here, for

20:58.520 --> 21:04.040
example, is a sequence of visualizer. This is the kind of thing where you might want to embed

21:04.040 --> 21:08.120
a little widget that people can share and reference, and we're working on ways to make it possible

21:08.120 --> 21:12.520
to embed little of absolute things in your missed sites to be able to do this, and this is an

21:12.520 --> 21:16.840
example where we just hacked our own code to make it work, but missed is permissive enough to let

21:16.840 --> 21:21.720
you do that. I'm going to skip this one, which is not super important, let's keep going.

21:23.960 --> 21:28.120
You don't get to see that demo, sorry. Right, finally, and most importantly, I don't want

21:28.120 --> 21:32.040
to rush through it, led by an open community. So for duplicate work and for missed,

21:32.040 --> 21:36.440
communities, the most important thing, we want to be an open community that is governed by

21:36.440 --> 21:40.840
a collection of peers, a collection of organizations, and individuals that all work together.

21:41.880 --> 21:46.760
So we have a team compass, and in most duplicate projects, have these, and it describes the

21:46.760 --> 21:52.120
internal structure and organizational practices of how we work and what drives us forward. And we have

21:52.120 --> 21:56.120
it here so that people can understand the way that we work and the way that we operate, and

21:56.120 --> 22:00.280
see a path for them that they can start to consider how they might contribute.

22:00.280 --> 22:03.560
Whether that's reviewing pull requests, whether that's adding new issues, whether that's

22:03.560 --> 22:08.680
triaging things, whether it's checking for typos that I've made in the docs. If we have an open view

22:08.680 --> 22:11.960
to how we work, this should make things easier for people to engage for the first time.

22:12.840 --> 22:17.160
So this is the core team. I'm here. That was not apparently my partner says it's a terrible

22:17.160 --> 22:22.840
photo of me, but I've put it in anyway. So we have two ITC curve note, a black-cenship data science

22:22.920 --> 22:28.360
amongst other collaborators here, and the list is growing. Crucially, we have a much larger group

22:28.360 --> 22:32.520
of frequent contributors outside of the core team. So there are lots of different organizations and

22:32.520 --> 22:36.680
people driving the project forward, and that's one of the really exciting features that we have

22:36.680 --> 22:41.560
as part of Juvedberg. So you can learn more by looking at some of these links. If it sounds like

22:41.560 --> 22:45.720
something you'd like to be involved with, I'm already drowning in GitHub notification so a few more

22:45.720 --> 22:51.160
won't hurt. Please feel free to ping me, and I'd really love to hear from you. I don't know how much

22:51.240 --> 22:56.600
time I have left. Five minutes. Do I have time for a short demo? Always a time for questions.

22:57.240 --> 23:04.840
Okay, great. So I've got two tiny demos. So if I can figure it out, there we go.

23:10.680 --> 23:12.520
It's not, you're not supposed to be saying anything, don't worry.

23:12.520 --> 23:36.920
Okay, let's try this. Whoops. La-ba-ba-ba. Cool. Right, say. Cool. So here's a Juvedberg website. This is what

23:36.920 --> 23:41.080
you might see when you start up right in some content. It's about fake birds, and then on

23:41.080 --> 23:48.440
how to the fake bird conspiracy. Cool. I'll show you more later. This is a Juvedberg page. It's got

23:48.440 --> 23:53.000
lots of interesting markup. You've got this of definition lists. These which previews that I told you

23:53.000 --> 23:57.800
about, sorry, Mr Bird, out of the way, and then also I have some code in here. That's a really

23:57.800 --> 24:02.920
not good look of my face that I took earlier. So you can embed all kinds of stuff in here. You

24:02.920 --> 24:10.440
can do all kinds of interesting things, and the source code for this just because I want to show you

24:10.440 --> 24:19.400
was if I open up my file, there we go. So we have some information about what's running the code,

24:19.400 --> 24:25.160
some abbreviations, my name, because I'd like to see that everywhere. The title, some code that gets

24:25.160 --> 24:29.960
then embedded in a subsequent expression, an interesting figure that wasn't very interesting,

24:29.960 --> 24:34.680
and it's a finally a code cell on the bottom. You can see how actually the amount of markup there,

24:34.680 --> 24:38.840
although probably I'm familiar to some people, is quite thin. What's captured in there is more

24:38.840 --> 24:42.680
interesting is the AST, and that's the bit that I was spending all this talk talking about,

24:42.680 --> 24:46.360
but I've run out of time to go any further. I'll skip the other conspiracy theories demo,

24:46.360 --> 24:57.640
and I'll hand over to questions if anyone has any.

24:57.640 --> 25:11.720
Yes. Yes. So there is support for Jupiter light already. Computations that you really

25:11.720 --> 25:15.880
know, there's quite a lot of interesting parts to it, so there are projects like end script and

25:15.880 --> 25:19.880
forge, which we don't support yet that I would like to, because that makes baking actually complex

25:19.880 --> 25:24.840
environments a lot easier. There's also three kinds of ways you can execute with Jupiter book.

25:24.840 --> 25:29.480
You can execute locally when you're running the build. You can execute in browser using the

25:29.480 --> 25:33.080
binder mechanism that I showed you, and then there's a third one that I've temporarily forgotten,

25:33.080 --> 25:38.200
but suffice to say there are different ways you can think about computation, and Jupiter light is

25:38.200 --> 25:43.640
pertinent to the in browser form. We also support passing in a Jupiter server URL, so if you can

25:43.640 --> 25:49.000
start a Jupiter server on our remote binder or on Jupiter gateway, you can run it in CI, but use

25:49.000 --> 25:52.760
a binder hub to actually build the book and do the complex computation, which is something that

25:52.760 --> 25:56.600
too ITC worked on recently. So there's lots of interesting places to take this, and it's quite

25:56.600 --> 26:00.120
nascent, so I think there was a lot of interesting runaway we could explore, so thank you for your

26:00.120 --> 26:03.240
question. You know what, last point. Oh, sorry.

26:07.240 --> 26:09.720
The link I will go back to, and then can I ask you off?

26:22.920 --> 26:24.440
Is there anything special?

26:33.080 --> 26:34.600
Well, the digital.

26:34.600 --> 26:44.600
a markdown in the east or to provide a pipeline of documents on this case and for the best

26:44.600 --> 26:49.600
parties of the talk before we communicate.

26:49.600 --> 26:53.600
So my understanding is about an editor is something we'd like to have.

26:53.600 --> 26:57.600
We haven't done a lot of work there yet, but members of the Dubb Book community have worked

26:57.600 --> 27:01.600
on making like a rich whip what you see is what you get editor for this.

27:01.600 --> 27:07.600
Injusting a dock ex, like a word file, and then using it as an input file, we don't support that yet.

27:07.600 --> 27:11.600
But from having seen other talks this week, I don't think that's incredibly difficult.

27:11.600 --> 27:13.600
And it's something we probably could do.

27:13.600 --> 27:17.600
The difficult part is figuring out what subset of word documents you want to support,

27:17.600 --> 27:20.600
and the more restricted you can be kind of the easier it gets, really.

27:20.600 --> 27:21.600
Does that answer your question?

27:21.600 --> 27:26.600
Let's talk after this.

27:26.600 --> 27:27.600
Thank you.

27:27.600 --> 27:40.600
Thank you.

