
Mine Çetinkaya-Rundel & Julia Stewart Lowndes | Hello Quarto: Share, Collaborate, Teach, Reimagine
What is Quarto? In this talk, in four acts, we will discuss how Quarto unifies and extends the R Markdown ecosystem. Through our work with NASA Openscapes, Duke University, and RStudio, we will share our experiences sharing, teaching, collaborating, and reimagining with Quarto. Full of demos with Quarto in RStudio and Jupyter and weaving together narrative and code, this talk will help you get the most out of Quarto regardless of your background with R Markdown, the computing language(s) you may use, and your tool of choice for authoring. https://quarto.org/ Session: Keynote
image: thumbnail.jpg
Transcript#
This transcript was generated automatically and may contain errors.
I'd really like to welcome our first keynote speakers, Mine Çetinkaya-Rundel and Julia Lowndes, who are going to be talking about Quarto. And there are literally no two better people suited to give this talk.
Mine is my colleague at RStudio. She's also my co-author of Alpha Data Science. She is a professor of the practice at Duke and just a fantastic educator. And I deeply appreciate her empathy with new r users.
Julia Lowndes did a PhD in marine biology and squids. She also started Openscapes in 2018, supported by Mozilla. Julia is like one of the people I just love to hang out with at rstudio conf. Whenever I see her, because she is just so passionate about educating people about the power of R. And whenever I get to hang out with her, I just feel rejuvenated and excited about the work that I do.
Unfortunately, Julia and Mine will not be taking answering questions today. But if you do ask questions in the Slido, they will read them and they will pass them on to the Quarto team. But they will not be taking questions today.
Thanks so much, Hadley. And thanks so much to all of you. We are so excited to be here.
Mina and I have been using Quarto for over a year now. Mina has been teaching with it and has been contributing to the development of it. And my teams with Openscapes were the first external testers of Quarto. And as we've used it over the past year, we have grown to love it so much, and we are excited to welcome you to Quarto.
But also, we know you have questions. We did, too. What is Quarto? Why is Quarto? And how does it interoperate with R Markdown and your other existing workflows?
Well, Quarto unifies and extends the R Markdown ecosystem. It unifies it for people who love R Markdown so that little points of friction are reduced as you make websites and books and slides. All of those will now have a common approach. And it extends it for people who do not yet know R Markdown as a friendly way to work reproducibly and publish documents that combine text and code and output in the same place.
So Quarto is a new open source scientific and technical publishing system. And the goal is to make the process of creating and collaborating dramatically better. So it handles inputs in multiple languages and outputs in multiple formats, all going through the same Quarto machinery.
So in our talk today, we'll introduce you to Quarto through stories and demos. First, Mina will focus on how Quarto unifies the R Markdown ecosystem through stories of sharing and teaching. And then I'll focus on how Quarto extends the R Markdown ecosystem through collaborating and reimagining.
So we are so excited to get started. So let's kick it off with you, Mina, to talk about sharing with Quarto.
Sharing with Quarto
Thanks, Julie. I'm so excited to have the opportunity to talk to you about Quarto, which I've been living and breathing over the last year.
So I work at the intersection of education, research, and development. The word educator might make you think that I am in front of crowds like this, maybe smaller, 24-7 lecturing at them. But actually, I spend a lot of my time in front of my computer creating and authoring artifacts that I share with the world for the purpose of teaching. And I often think everything I create, I share openly with an open license that allows for use, reuse, and adaptation.
I often think web first for wider reach, but I also still live in the confines of academia and traditional publishing, which means that I still have to make a lot of PDFs. Therefore, an authoring system that allows me to achieve multiple outputs from the same input, the same source code, that brings code and prose together is not only essential for me, but it's actually basically what I need to carry on my existence.
And for the last decade, that has been our markdown for me. In fact, I remember very vividly when JJ and Yue gave a talk at USAR 2012, the first USAR I attended, on Knitter.
When I attended that conference, I don't think I would have identified myself as an R person. In fact, I'm pretty sure we went to that conference because we were going to Bonnaroo already and it was there, and I thought, why not? This was the summer of my first year of teaching at Duke. I was very dedicated to open science. I had already been working on an open source textbook, but this idea of kind of wider reach and open science, but also doing computing, I had not really put the pieces together. And one of the reasons why I had not put those pieces together is that I didn't have a good workflow to bring them together.
If you know me, you know that I'm a prolific sharer, and I like things to look pretty as well, not just be functional and pretty, and I really did not have a good workflow for being able to achieve that. But I started listening to this keynote on Knitter, and it must have been no more than three slides into it that I just actually pulled out my laptop and started converting my teaching materials to use it, because this idea that I can bring narrative and then code together and have it just be like syntax highlighted and look organized and be ready to be published on the web was just such a dream come true for me.
So I am going to call this keynote a success. If some of you have already tuned me out, took out your laptops and have gone to Quarto.org to start playing with it. But I do hope that you will continue to listen with one ear and take in these beautiful illustrations by Alice and Horst. And for those of you who want kind of a more laid-back morning, you can go to this link, nina.quarto.pub, sit back, and I will advance the slides for you.
Quarto unifying the R Markdown ecosystem
So Julie mentioned that about unifying the R Markdown ecosystem. So let's dig into that a little bit more. Here are some of the packages from the R Markdown ecosystem that you've come to love and rely on over the years. Each package addresses a different need and solves a different problem. You might be creating websites or writing blogs with blog down or distill, writing books with book down, writing journal articles with articles package. Quarto unifies the functionality of these packages.
On the technical side, building on Pandoc. And on the human side, building on over a decade of experience developing, maintaining, and tweaking these packages, as well as community feedback and the extension packages developed by the community. And such a unification process presents a really nice opportunity to identify and address gaps in functionality and inefficiencies in user experience. And developing Quarto has been no different.
So some highlights of these improvements that are near and dear to my heart are a consistent implementation of attractive and handy features across outputs. So tab sets, code folding, syntax highlighting. Imagine these things just working out of the box regardless of what you're producing. Also more accessible defaults, as well as better support for creating accessible documents. That are particularly helpful for new learners. Things like YAML completion and informative syntax errors. And perhaps excitingly for those of you who are not coming to this from the R Markdown ecosystem, support for other languages like Python, Julia, observable, via the Jupyter engine for executable code chunks.
Demo: Quarto in RStudio
So by now, I'm assuming you've already started playing with Quarto or you're just waiting for me to do that. So let's dive in and take a look at what all the Quarto fuss is about. So here I have something that might look familiar. An R Markdown document that has some YAML on top, some text, and some code. Many of you have seen this before.
Let's knit this document. It's a very, very simple analysis using the Palmer Penguins dataset that has a nice visualization at the bottom. So what I'm going to do first is switch over to the visual editor. I personally really like writing in the visual editor. It allows you to do things like you can bold things and italicize things without having to write Markdown code. And Julie will do a demo of the visual editor a bit more later.
But I'd like to show that whether you're using the visual or the source editor with R Markdown, the output looks exactly the same. So it's just about your personal preference about authoring on the input side. But what we're going to do next is actually change things up. Let's close up that file. And what I'm going to do is just rename that RMD to be a QMD and not touch anything else. The little logo changes. I open it up. And what I have is a render button instead of a knit button. And I can see that the document just works.
So Quarto is able to render our Markdown documents. The output looks a little bit different. Slightly different styling. But we haven't changed anything else. We're going to change the YAML now to include the format field instead of output, which is how we define different format types. I'm going to click on render and save so that I don't have to click render every time I make changes.
So again, this is basically our starting place with Quarto. I can do different output formats. So let's create a PDF. One of the things I really like about creating PDFs with Quarto, as a person who doesn't like creating PDFs, is that the PDF appears in the viewer as opposed to in a popup window. But let's go back to HTML and take a look at some of these chunk options.
So with Quarto, we're using the hash pipe for defining our chunk options, which I think helps with readability a lot. And we have really nice completion for YAML. So if I can't figure out what was that chunk option for hiding my chunks, oh, eco, how would I define the values, true or false, I can rely on the YAML completion to do that. And now on the output, we don't have that code chunk appearing anymore.
I can also set global chunks, and maybe like me, this is one of your most Googled things. How do I set global chunks in Knitter? I can actually just do that now in the YAML through the execute field. So I can turn off the display of code chunks for the entire document very explicitly at the top. And now they're all gone.
Well, we've been working with an HTML document, which is going to produce web-ready output. Let's take a look at one more thing. One of the reasons why I like these chunk options as hash pipes is when you have really long chunk options, say if I want to insert this lengthy text as alternative text for the plot that I am producing, it stays very kind of legible, and obviously the alternative text is not going to be visible in the output, but if I was to inspect that element, I can see that text is in the HTML source code, so that is still accessible to screen readers. Making these things easier is going to make more folks write alternative text, I think, for the visualizations that they're producing.
Let's make a presentation. I don't need to touch the rest of my code. I am just going to change my YAML header to format reveal.js and create a reveal.js presentation. My title page is basically whatever was in the YAML of my document, and you can see that each of the section headers are now new slides. I have that really squished plot, because reveal.js tries to help me by making my plots take just as much space as there is, but I can easily insert another header, a second-level header to just move that content to the next slide. And to me, being able to do this without touching the rest of the content is really, really satisfying.
So let's go back to HTML, and next what we're going to do is attempt to make a website in less than ten minutes. So I have a single HTML document here. I'm going to create one more document, so we're basically expanding from a single document to bringing multiple documents together in a Quarto project. I'm going to keep this document very simple intentionally. No computing in there. I'm just going to put a little bit of text, so I've titled my document welcome, and maybe let's add some plain text like this is the demo site for the talk.
Next to bring them together, I'm going to create a YAML file, a Quarto.yaml file, and I am going to write YAML on the fly, and I can do that relying on the tab completion again. So we're creating a Quarto project. There are various types of Quarto projects you can create. The type I'm going to select here is website, and then I am going to define how I want to lay out my website. Let's give it a title. I'll call it Quarto, and I'm going to create a navigation bar, and on the left side of the navigation bar, I'm going to link to the two documents I have, the index.qmd I just created, and the hello.qmd that I had renamed from that original R Markdown file.
The next thing I'm going to do is I like to stay in the RStudio IDE, but I want my build tab to be able to get my website going, so I'm just going to restart my project, my RStudio project, and I have a build tab that gives me the option to render or preview a website. Let's render the website and see what that looks like.
And there we go. We have a website with multiple pages in it that we have very clearly written out in this simple and expressive YAML file. To me, this is incredibly encouraging.
Next, what I'm going to do is I'm going to start setting things up for Julie, and also try to be kind to myself. I have lots of computation in that hello.qmd, let's assume, and I don't want this to constantly keep running every time I update things, so I'm going to set the freeze feature to true, which says only rerun the computation when I explicitly ask you to do so in that document, otherwise, as I change other things, don't rerun the computation. You can see that when I set this, I get this freeze folder where the results of my computation is stored, and I can set freeze to be other values, like automatic, where it would only update if you actually touch that file. I'm going to set it equal to true so that let's see if Julie can later recreate this website in a non-R environment.
So I have a website, I have stored my computations, I have multiple pages. Well, we could with one command, quarto.publish in the terminal actually publish this to QuartoPub. So if you do want to see the published website, you could go to mine.quarto.pub and the website is there. So this is one of the pages that we created. And we're able to do that without, you know, setting up things like actions to run our code and whatnot with one line from the terminal.
R Markdown vs Quarto
So what did we see here? Now that you've all had a chance to kind of see Quarto in action, you might be wondering how are R Markdown and Quarto different, especially because we were able to just get things going by renaming that file. The main difference is that with R Markdown, it is the R package R Markdown that does the heavy lifting of what needs to happen to go from the RMD file to your output. And that's something we as R users are very accustomed to. You want to solve a problem, install that package, the package that solves the problem you want to solve.
With Quarto, on the other hand, it's the Quarto command line interface. So not an R package, but a command line interface. Something like Git, for example, that's actually doing the heavy lifting of taking your input file, running your executable code chunks through either Knitter or Jupyter, creating a plain text Markdown file that then uses Pandoc to get to the output of your choice.
So this is technically pretty impressive, but I'm going to be very honest with you. It's not exactly what sparked my interest about Quarto. What did spark my interest about Quarto was how easy it makes it to move between various formats. So as an educator, the things that are of utmost importance to me is that the artifacts I create are reproducible and that there's an ease of transition between various output formats.
At the risk of sounding like a broken record, I do actually have to relay the same information to my students in slides as kind of lecture notes in a homework assignment posted on the course website. So oftentimes I'm moving the same content around these different formats. And over the last year of doing this with Quarto, I felt like I finally found the tool that allows me to do this easily without futzing around with my code and the content part of my document, but just changing a couple things in the YAML.
And over the last year of doing this with Quarto, I felt like I finally found the tool that allows me to do this easily without futzing around with my code and the content part of my document, but just changing a couple things in the YAML.
For example, if I want a lesson, kind of a single document as lecture notes or something, I can say format HTML. I can easily change that to reveal JS without touching anything else in my document, and I have a slide deck. I can simply call that file in a Quarto YAML file to create a website. And you can see that all I needed to change is just this YAML. I didn't have to remove slide breaks. I didn't have to relevel headers. That does save me some time, and that time can go to actually focus on the content that I'm developing, and that I find extremely liberating.
But ultimately, while easily creating documents in multiple formats is nice, for the sharing story to be complete, the tool needs to support easily sharing things as well. So something like that Quarto publish command that you can run in the terminal, and I'm sure soon a button in the RStudio IDE. I think that tooling that makes it easy to share what you do with the world on the web is incredibly useful. And it's not just useful to you, but to the world, as it facilitates open sharing of knowledge for learning and reuse.
I've been talking about me and my work so far, but I, like many of you, don't operate in a silo disconnected from others. Much of my work and much of Julie's work is collaborative. So over to you, Julie, for collaborating with Quarto.
Collaborating with Quarto
Thanks, Mina. I have gained so much from the open sharing and the web-first approach from the R community, and it has so informed the way that I collaborate and the way that I work.
So I work at the intersection of actionable environmental science, open science, and data science, and what I absolutely love doing is mentoring, teaching, and empowering communities, having learned from so many of you, like I said. And I wanted to pay this forward and welcome more folks to this experience that I've had with the R and Mozilla communities in particular. So I've made this my job through Openscapes.
Openscapes is an approach and a movement that I launched in 2018 and have built together with my partner, Aaron Robinson. Our flagship activity is mentoring research teams in open science. We think of open science as a beautiful landscape full of open source software, data, and communities and many paths forward. And we help people move from the sad, lonely animals in the foreground on the bottom left and towards this landscape so that they can explore this and navigate this safely with their teams.
And our role is to welcome folks at the trailhead and help them establish what that trailhead even looks like. Who's there? Who is part of the team? How can we think about who can be included and start this journey together with limited trampling and frustration?
Adrian Rios from NOAA fisheries has been part of Openscapes, and she describes this in this way. She says as fisheries scientists, we know that when we're in rough seas, it's important to keep the fish afloat. It's also important to keep the ship afloat and to get out of the storm. She says Openscapes helps teams steer out of the storm of email chains with 37 versions of the same spreadsheet and into the calmer waters of open science and meaningful collaboration using tools like R.
So I think that I have the best job. I get to mentor and collaborate with teams like Audion's who are doing really critical and hard work around environment and climate. And I get to help them do it a little better by connecting them to the open source tools and community resources that we all produce. And it really blends working with these teams really blends for me the role of mentoring and collaborating because I learn so much along the way.
NASA Openscapes
With NASA, you probably think about outer space, but they collect an unbelievable amount of data about earth. And researchers use earth data in many ways, including how to understand impacts of the heat waves and the wildfires that we're increasingly seeing through the summers due to climate change. These data are freely available from 12 different data centers across NASA, but researchers have to download these data locally from each of these data centers to analyze it locally, and this puts a huge burden on the researchers. So now, following many years of preparation, these data are migrating to the cloud through AWS and others, and NASA data centers will be supporting researchers who will be migrating their analytical workflows to the cloud, too.
So my partner Erin had ten years of experience working with the NASA earth data community, and she brought NASA and OpenScapes together in a three-year project that we leared together. And our focus is on developing, first and foremost, a mentor community across those 12 data centers so that they can co-create and teach common tutorials for these researchers using NASA earth data.
So let me just stop here and say that this is a big project, and it is awesome. But it was also incredibly intimidating to me. I do not know the NASA community. This is an organization I've looked up to my whole life. I'm not familiar with these types of huge spatial data that they're working with, the type of research questions earth scientists are asking and modeling, not to mention cloud infrastructure, which is a whole new era.
But an additional thing that was particularly intimidating to me as an R person is that many earth scientists use Python. And they are developing tutorials primarily in Jupyter notebooks. And my role in leading NASA OpenScapes was not to learn Python from the ground up, but I needed to be able to collaborate and interoperate and support Python users.
So something really powerful, though, is that I brought almost a decade of experience and confidence using R Markdown. And I've been able to you've probably heard me talk about this, because I talk about it a lot. I feel like it's a superpower. Quarto let me bring this superpower to Python. Quarto was emerging right when we needed it. And I asked JJ if we could use Quarto for NASA OpenScapes. It was really early in its development, and this became a really exciting collaboration between the Quarto development team and the NASA mentors.
This was a really generous and gracious group of people together as we were learning how to collaborate together and build tutorials and try new software. And we were able to, through our questions and use, influence some of the design features, particularly the freeze feature and how it operates with Jupyter notebooks.
So this is the first Quarto site we developed for our first teaching event last fall. This is where we really found traction as a mentor community, and we were able to make this beautiful collection of tutorials that was, first of all, helpful for our own development as we were learning to collaborate with each other, because we could see which tutorials were there already and where the gaps were. But it was also a very friendly, contained place for our learners to navigate through these resources.
And importantly, Quarto was also something that we were all able to learn together. And that turned out to be really important, because it turned out I wasn't the only person who was intimidated by all these moving pieces on all these new pieces of software and how to collaborate together. Learning Quarto together opened the door for us to talk more about our workflows and develop better systems for collaborating and really take this to the next level.
So there's two things to highlight here. The first is that Quarto enables collaborating across coding languages. This is one peak of a way to think about this. This is a simplified view of one of our YAML files, where you can see we've got multiple file types here. These are mostly we've mostly focused on Ipy and B, Jupyter Notebook files in our primary development so far. But as we've worked more and more with the NASA research community, we've found that there is a substantial R community using NASA Earth Data Cloud. And it's really exciting that the workflow we've invested in and have developed together, we can use to support our users as well.
The second is that Quarto enables contributing from our current tools. So some of our team, mainly me and Aaron, used RStudio primarily. Some used JupyterLab, VS Code. Some edit directly in GitHub through the editor. And this was really important that we were all able to use our own tools, because with all these moving pieces, we were able to integrate that workflow into the comfort of our own tools.
Demo: Quarto in Jupyter
So this is a Jupyter Notebook, and it's actually running in our Jupyter hub. You can see we're going to interoperate with Quarto in the terminal here on the right, and we've got all the files that Mina just created on the left. So the first thing we'll do is we'll say Quarto preview. And this will provide a URL where we can review the previewed version of the site that Mina has created.
So I don't have R installed here. But with the freeze function, I'm able to open this in this new environment. So here is our beautiful website. I like to kind of have them side by side so I can see them refreshed. And if we want to add a Jupyter Notebook, let's say, oh, look, I just added one.
So this is a Jupyter Notebook I've got over here on this tab. And this is how we can think about Quarto. We've got our YAML at the top where we're going to say hello to Quarto penguins in Python. We've got our markdown text here, and we're going to use the Palmer penguins package in Python. This is how it will load the packages. And the way you operate this in a Jupyter Notebook is that you execute the code as you go. So when I press this play button, this is going to execute that code and actually embed it in the document.
So we'll do that again with a plot about penguins by clicking this button. And now this plot is here as part of the document. So the workflow here is that you execute the code as you go and as you develop, and then you save your file as you go. So this is the workflow in a Jupyter Notebook.
And when we save that, now we can think about adding this to our Quarto YAML. And the way we do that is exactly the way that Mina did before. I can add a Jupyter Notebook right here next to these Quarto files. And when we save this YAML file, we're able to peek at the terminal that's going to tell us when the site refreshes, and there is indeed our hello Quarto in Python. You can see it's beautiful, and it looks exactly the same as the QMD documents in R.
So if we wanted to add a figure caption to this plot, we would use the same hash pipe comment system that Mina just introduced. So I can put this figure caption here, and again, I can execute and save, and this when I refresh over here, this will show up in our document. And there is our figure caption. But you can see that it's not here. It doesn't do anything to the Jupyter Notebook. It's a comment in the Jupyter ecosystem. It's not affecting the Jupyter Notebook at all.
Let's add one other feature here in the code chunk option. Let's say we wanted to display this plot in the margin instead. There is our plot in the margin from a Jupyter Notebook.
So let's now say that operating between formats is really important, particularly when we're in collaborating. So a workflow that's been really powerful is to convert Jupyter Notebooks into Quarto documents so that checking them in with GitHub can reduce merge conflicts. So what I can do here is to say Quarto convert and tell it the file, and it will by default turn it into a QMD, and you can go back and forth between these formats. So you can see it's created a new QMD document, and when I open it in the editor here, this is now that same document with our familiar view in QMD form, and you can see the Python. So this has a lot of utility and power, and it's very important for teaching as well.
Teaching with Quarto
So over the last decade, I have thoroughly enjoyed teaching with R Markdown. When you get students in the class for the first time and you give them a fully functional R Markdown document and ask them to hit knit, and they can see their text and their code and the output come together before they even learn any programming. You can almost hear, wow, that's so cool in the classroom. And I've also loved that this tool is something you can introduce to introductory students on the first day of class and that it can grow with them.
However, as students' expertise grow in statistics and also in computing, and also their needs grow in terms of the different outputs they need to produce to, say, just a single homework document that they can turn in as an HTML to a well-formatted journal article or a thesis that meets the school style, there is a little bit of friction that happens. And a pleasant surprise, for me this was a pleasant surprise with Quarto has been that this leveling up has been a lot smoother. The learning curve for going from a single document to a multi-document project has been a lot smoother.
So I'll tell the story of one of my students. So this is Holland Stam. She's an art, history, and visual media studies student who I met when she was taking my regression course just last spring. Holland came to my class with just one semester of intradata science under her belt, where she had learned R Markdown. And in my class, we dropped these students into learning Quarto after a brief overview of how it's different than R Markdown.
And so she was doing her homework assignments and stuff as single documents in R Markdown, but at the same time working on her art history thesis, which was pretty quantitative. So if you've ever taken an art history class, you might be familiar with these two textbooks, Garner's Art Through the Ages and Jansen's History of Art. These are foundational art history textbooks that have been around for decades at this point with multiple editions. And what Holland was looking for is representation of different genders and ethnicities of artists and how much space is given to them in these textbooks and how this changes over, how, if at all, this has changed throughout the editions.
You can see her meticulously measuring in this picture. This is exactly what she did to collect her data. Actually measure the art that is featured in the textbooks through the editions and then join this information with demographic data on the artists so that we could analyze and kind of try to build a model to see if things have changed over the years, what representation looks like.
On the sad side, the representation was exactly what you would imagine, the lack thereof. But on the happy side of this story, as she was working on her thesis, she realized each of my chapters could be just like one of my homework files because ultimately what do we do in our homework? Write a bit of code, get some results out, interpret it, and that's exactly what she was doing. And then with a bit of Googling around and a little bit of help from me, she was able to bring these chapters together with a single YAML file and, you know, turned it into her thesis.
However, when she realized that she can add captions to her figures as she creates them in the code chunks and that she can, she does not have to manually style citations, millions of citations she had for this thesis project that she can just use the visual editor to insert these citations. She decided, I am willing to put in the effort to do that.
So as a side story, Holland was in my kind of research lab and she also worked with another student of mine, Sarah Lemus, and they packaged up this data. So Sarah was incredibly inspired by Holland's enthusiasm about this project and Sarah is a stats student who had been working with me over that semester to learn a little bit of package development by updating some of the data packages I maintained. So it was very clear to us that the enthusiasm between these two students, they should come together and work on this project together. So if you're interested in the data that Holland collected and Sarah and Holland put together, you can actually get this package off grant now. It's called Art History and has a really cute hex.
Demo: Quarto features for teaching
So just like Holland, Quarto has solved a lot of my problems as an instructor as well. So I am going to demo a few of those to you. Now first and foremost, you can open a Quarto document in the RStudio IDE and render it. I've shown you this before. Why am I saying it again? I did not have to install anything. Everything comes bundled. So if you are teaching in the RStudio IDE, no installation required and we can basically get going. And I think to me that's incredibly liberating.
Beyond that, though, there's really handy features. For example, with a single YAML field code link set to true, I can each of the documents that I create can now look a little bit like package documentation you may have seen where the functions are clickable and it takes you directly to the documentation for that function. And that is incredibly helpful for learning and teaching because it saves me a lot of time from adding those links.
Now on the learning side, let's try to make a mistake. And let's see that it's really hard. I want to write false in capital letters. I'm trying to make a mistake. Quarto is constantly telling me don't do it, Mina. So let's go ahead and think that I actually managed to do that. And let's render this document. The error that we get is human readable and it tells me exactly what to do. It says maybe you should try false in small letters instead. And this is incredibly helpful for new learners and also experts who might be frustrated reading through cryptic YAML errors and really kind of pushes you in the right direction to get things going so that, again, you can focus on your content and not the minutia in a way.
Now, as I said, as an educator, a lot of slide decks is kind of like my life. So let's turn this into a Reveal.js presentation again and let me show you a few of the handy features here that I use regularly. The fact that you get a document outlined by default is really nice if somebody loses their place. Everyone always asks, can I get a PDF of the slides? Now they can without you having to do anything extra.
Other things that are really handy is being able to annotate your slides. So we can turn on the chalkboard feature and this way you can go to something like a plot and start outlining things. If you, like me, have been an educator through the pandemic, I bet you spent hours in faculty meetings, how are we going to show things to students on Zoom? Well, this is one way that we can do this. We can also open a chalkboard and just start writing on it, which is really handy when you're teaching in a classroom where there's a projector screen but nothing else.
I can also turn on Multiplex, which is the feature we're using right now if you're following along, and it will, you know, move forward your slides for you. So even if your students fall asleep, they can sort of, you know, stay with you as you go through things. In order to do this, you open the speaker file and kind of present from that and post the non-speaker file for them.
Another thing I'm going to do here is to turn on the code so that it is visible, because when I'm teaching, I would like to show the code to my students. And let's show one more handy feature. Oftentimes when you have a big chunk of code, like a lengthy ggplot code, you may want to iterate through that highlighting things line by line. So with one chunk option, you can define which lines you want to highlight, and it automatically adds animation to your slides so that you can step through them. And to me, that's really helpful, because I didn't have to add characters to my code to do that.
Now, my plot is tiny. That's not helpful. But again, without me having to do extra work to move it on the next slide, I can say change the output location to next slide, and it will automatically do that for me without me referring back to an older chunk label or something like that. So again, a lot of these things, many of you might know how to solve, but I think the fact that they're solved so elegantly is quite liberating.
The last thing I'm going to talk about is what about the research side of my life. Well, let's open a new project, and let's go ahead and write a paper. I'm going to submit a paper to the Journal of American Statistical Association. With one comment, I can basically from the terminal use one of the templates that are available, and there's a growing number of templates there. Should I trust the authors? What do you guys think? Should we trust the core development team? I think I'm going to say yeah, okay. And I'm going to call this my awesome paper.
This will generate a template for me that I can author in Quarto, which means I can put my code and my text in the same document, which is how I generally like to write my code. And another nice thing here is that, you know, if I was to get rejected from this journal and wanted to submit to another one, changing between styles is pretty easy, again, without changing your source code.
Now, there's unfortunately one drawback. Quarto does not write your paper for you. But my experience with the Quarto development team is that when you open issues, they're like really quick to respond, so I don't know, maybe by the end of the week they'll figure out how to write our papers for us, too.
Quarto flattening the learning curve
So we've talked about Quarto flattening the learning curve and, you know, basically saying that when we are leveling up from a single document to a multi-document input and going to various output types, and I said that this was a pleasant surprise to me. In hindsight, it should not have been a surprise. It's just not what I was thinking when I first started teaching with Quarto.
But beyond just growing and expanding the scope of your work with Quarto, I think that Quarto can grow with learners in a profound way as well. The fact that Quarto is language and independent and also authoring tool independent offers an opportunity for folks to take Quarto with them in their data science journey, wherever that journey might take them.
After working on this for a year almost with Julie, I am almost tempted to learn Python. And maybe I will. But you know what? Who is learning Python are my students. And they're learning Python and Julia and other languages, mostly in their computer science courses. And to imagine that they could learn R in RStudio with Quarto in my class and then go take a computer science class where they're probably living in a Jupyter notebook and learning Python but still using Quarto, that sounds like an incredibly bright future to me. And a bright future includes things we can't imagine yet as well. So Julie will now tell us a bit about reimagining with Quarto.
Reimagining with Quarto
Thanks, Meena. So we've already seen how much Quarto can do for teaching and collaborating and sharing. And now I want to push it a bit further. What if we could reimagine open science as part of the climate movement? We know what this R community and the open science and open source communities are capable of. So what if we put that energy towards climate?
Because we're in a climate emergency, we must rapidly and radically reshape society. We need every solution and every solver. This is hard. And it's big. And my hope lies in this community and climate researchers and everyone in this movement who feels like what they do every single day plays a part.
So let's think about this concretely with three user groups in this community, in this movement. First are scientists who are working directly in line with climate change. This could be fisheries scientists who are studying where our food sources are migrating to as the oceans warm and operating with managers and stakeholders. They're working with really hard problems. These really hard big problems. That's really where OpenScapes has been really bringing this passion and this movement that we feel in the R community to help these researchers and help connect them there.
And I think now so many of you that I talk to in the open source and R communities. So the second category is open science and R communities. I know a lot of you are feeling stuck, too. You're feeling the pressure on climate and feeling like changing to more efficient light bulbs isn't enough. What if you aligned your daily work as part of climate action as well? We want Posit to be around in 100 years. What is 100 years going to look like if we don't act now and really put this effort together?
And the third category in theme with the conference is extendable beyond these two categories. So we really need every solution and every solver across all facets of geographies and people and skill level and experience with technology.
So this work is really hard. And we'll return to concrete things that we can do in a moment. But this really does mean slowing down a bit in order to speed up. But it speeds up like a flywheel.
My colleague Ileana Fenwick is a marine ecologist who participated in OpenScapes earlier last year. And she really quickly became a member of the team teaching and extending and connecting other communities and seeing what was possible. And the way she describes this is beautiful. Because of OpenScapes, I've renewed hope in how we can bring about a kinder future in science. I see a commitment in the open science community to bridging the gaps where we've left members of our community behind. And it inspires me.
Because of OpenScapes, I've renewed hope in how we can bring about a kinder future in science. I see a commitment in the open science community to bridging the gaps where we've left members of our community behind. And it inspires me.
So we're talking about a profound culture shift that involves real deliberate work on both the tech and the human side. And we've got the tech side really figured out. The momentum and the potential and what we're all doing is amazing and phenomenal. And we can bring that power and energy to the human side, too. We can build inclusion into our daily work.
So let's think about the teams or the colleagues or the people that you interact with. And I think that they are probably way more similar to the groups I work with than we might expect. First of all, it means talking to colleagues. Asking them how they're doing. Are they stuck? What does their workflow look like? Where is their friction? Who's contributing to our workflow? Where are the handoffs maybe between reports or data? Where are people feeling friction? What can we do to help? So this means asking all these questions.
But really, and that's hard enough. Those open-ended questions. Another hard part is listening. Listening is really hard. It means that you are not trying to assume what they need. You're not trying to solutioneer as soon as you hear something. Because oftentimes, we don't even have language to describe where we're stuck. And that's part of the problem. So it also means, then, stepping up and being braver to ask for help and say what you need and really create this culture where what we feel in the R community around R code is also applicable to climate. So this is a practice to develop daily. To work on. To help others with. It's not a checklist. It's a daily thing that we can all do.
Quarto for culture change
So here's a practical example of this. Gavin Fay's lab group at UMass Dartmouth created the Fay Lab manual together during the pandemic. So they are quantitative fisheries ecologists. They work with data and code to work on fisheries things that I just described a bit earlier. So it is not uncommon for people in the environmental field to have data science training in the universities right now. So that means people coming into this quantitative group have varying levels of expertise and experience. And so they wrote this lab manual as a way to not only write down their lab philosophy, their code of conduct, how they wanted to work together. They talked about how to name files. And also how to learn the tools that they're going to develop together.
So this is a living online open document. And it's imperfect. And it's radical in science. Where we often wait until after the research is done to publish something. And that happens years into a career. And really limits the participation folks feel they have and agency they have.
So this is radical in three ways. One is that it makes the implicit explicit. The team all know because they co-created the document. They're all on the same page. Literally Quarto page. And to understand how they work together. They're able to put their values forward. And not only reduce the amount of emails where people are asking where things are.

