 So I'm Shiko Venansu, or do you want to go first and introduce it? Yeah, I'm happy to introduce. So we have Shiko here, and he's going to introduce us to the cause for Python beginners. And he'll also be taking questions in the end. So I can drop them in the chat and start to prefix it with, you know, questions for two speakers, so you can track your questions. So let's get started. Cool. I'm Shiko Venansu. I'm a volunteer from Brazil. I've been editing Wikipedia for the last 15 years. Somewhere along 2017 I started maintaining FOSS. And I'm here to talk about how can it be used for beginners and hopefully for advanced use cases as well. Those are interesting to you. And I'm also generally available for the hackathon if anyone wants to go into a more specific question. I can take it right now or I can take it later in private if you want, either in work adventure or Telegram or IRC or whatever. I think most of them. So get into FOSS. Why was it created? UV was one of the main drivers for this. And FOSS is very oriented to ease the way that Wikipedians and Wikimedians can use more advanced tools, can use bots and scripts to do their edits and get things to work. We have other alternatives like Toolforge and CloudVPS for that. Before we had Wikimedia Cloud Services, we had ToolServer. And you can always do the same things that you do in Paws on other cloud providers or other notebook providers. Notebook providers. We have Colab. We have MyBinder.org. And you can always just spin something up in AWS or Azure or GCT or wherever you want. But that does take effort. That does mean you need to understand how these things work. You need to get used to that environment. And usually that means using the command line in a least medium way. It's not easy for everyone. And for Paws, it's just there. You already have authentication with Wikimedia Weekies. You can just start coding right away. If you don't know how to code, you can even just copy something that someone else wrote and just change it to be for your Wiki. You can just translate the strings. So it's a lot easier. We're trying to reduce the command line tax to get people to use advanced tools for Wikis. So starting up Toolforge, which is the easiest of all those alternatives, means you have to set up... It's possible for experienced programmers, but it means you have to set up a developer account for Wikitech. You need to set up an SSH key. You need to upload that to Striker. You have to learn what is the job grid and Kubernetes or Kubernetes. I mean, one of those is fine. And for Cloud VPS, you have to do second factor authentication. And there are still weird edge cases, though they've been improved a lot by the Cloud team. For Paus, you just go to the web page. You sign in with your Wikimedia account. That's it. You can start a notebook. You can start to code immediately. And everything that you do there is already open access, and you can access it under the public Paus page. One thing that kind of shows this is that Paus has now 3,487 users that have ever used Paus, while TuForge had 2,150. I mean, obviously, TuForge users, the average TuForge user, is more active on TuForge than the Paus user is active on Paus. But this means that more people have at least some contact with advanced editing capabilities. And you can see the growth is a lot higher for Paus. The last time I did a talk like this was in 2019, and we've had 1,200-something new Paus users, and only about a little bit less than 400 new TuForge users. How does Paus work? This is a bit advanced, but I just want to get this out of the way. Paus is Kubernetes-backed TuForge instance. At the time that a user gets into Paus, a pod is created, a server is created for them inside of Kubernetes Paus cluster. And storage there is handled by NFS. And authentication, not only to get in and define who you are, but also to get access to the API is done with Media Weekend Meta. This is the general technical, one of the general technical diagrams for that. Users get into the proxy, the proxy sends us to the hub with authentication, and then you have a user pod separated for each user there. I can go to more detail if anyone wants, but this is not the main focus of this. So what can Paus do? A lot of use cases are endless because it's a server and you can do anything you want with it. But use cases are usually quick data exploration. This is something that I do myself a lot. Even for before writing tools, I'll go into Paus and I'll write something to understand what's actually possible. And that means that I don't have to get into TuForge and try to query databases or to use PyWeekBot into Forge. I can just do that a lot easier in the web interface with Paus. Creating dashboards, this is a very cool use case for Paus because the dashboards can be updated and you just create a notebook and instead of having something that you copy and run on TuForge every time, you have a web page with the results and it's a lot easier to share and show that to other people. In making bot edits on a wiki, that's a very common use case. You can do that both on the terminal and from the notebook. The current limitations for Paus is that we don't yet have a way to schedule execution. It's just something that you're running while the browser is open. After an hour, the server that is open there will be killed. If you have an open-mail computer and the browser is there, that's fine. It will still run, but if you shut down the internet or your browser, after one hour, that will be killed and it won't run anymore. Using Paus is easy. This is a 30-second demonstration of that. I just input the page there, sign in with MediaWiki. It already gets my username and I allow it and I'm in my server with my icon notebook from there or I can create a terminal. That's it. The 30 seconds there. Forking in Paus is almost easy. Hopefully we can get something a little bit better on this hackathon. As I said and as can hopefully be seen over here at the end of the video, once we create a notebook, we immediately get this public link over here. This is just a link to the Paus public instance with this notebook. Even this empty notebook will be there. Forking means that you can actually go to this public link for other users and then download the notebook and upload it into your own Paus server. This is the workflow for that. To go into the public link you add format equal raw at the end of your URL and then you can say that. I have almost here exactly because it's not as easy as we wanted to make. Choosing one notebook here my first notebook and I can kind of show that just adding the format raw and you can save. Yeah, Windows messes with extension so you need to save as all files there. And then we have notebook locally and I can upload that to my Paus server. Using Paus is very easy. I mean we have notebooks and the three things that I like to teach people about notebooks is that we're using cells. The notebooks itself is not the context of what you're executing. You're executing each cell. Each cell can be code or it can be marked down and cells can be run in any order. This is a print screen from that my first notebook and it shows that this cell was run the seven thing that was run and the first one of import was run as the 18th thing that was run. And this usually happens because you're changing something in the top cell and then you run it again and then you go down to another cell and run it. So it's a very interactive way of running code. But in the end the order does matter in terms of presentation. So you can also have these markdown cells like a first Clinton to power Paus is a markdown cell. Let me show you that live on my first notebook over here. So this is something that I forked when you saw the video of me working this a few minutes ago. And as you can see this is a markdown cell and I can double click it to have it as a bra markdown and I could, for example, make this level two heading instead of a level one and it will as soon as I run it now be a level two heading instead of a level one. And the same if I run this this is from the forked instance. I have never run any of these cells. So if I run it again it will now be level one. And if I can continue down it will be level two, level three, level four. Let me show you this other this other notebook that has more interesting examples of how you can use Python notebooks to do things in wikis. This notebook is very comprehensive. It has getting started with APIs and all kinds of ways to interact with the different media wiki APIs and even with outside APIs apparently. But it's interesting like how you could use requests which is a popular Python library and the page that you want to interact with and since it's not even authenticated should work out of the box you get it and we can get the response from the REST API here. Py wikibot is very interesting because we already insert we already insert authentication for it. So this is not an authenticated request because we're just getting the text. We're not saving it. We should then say page and I won't do it page.text equals something else and if I then go page.save it will actually and I run this it will actually make the edit for me as my user that has logged in in the most common way that I use pause and py wikibot. This notebook is very interesting. It has lots of lots of instructions in Markdown and it's a very good practice to have to not only have your notebooks but also have documentation inside the notebooks. And let me go back to that table contents. It also has the instruction on how to work a notebook and these are not working these links inside but they do work on the public on the public option and you can also use outside APIs because this is again open service open server that you can use anything on it. You can run anything. One thing that I want to stress also is that most of the uses of pause are Python notebooks. But these don't have to be Python notebooks. I could have here this is running as a Python 3 kernel and what we already have installed in pause is Python and R and bash kernels and soon we will install a Julia kernel because that was asked for but we could have several things over here. We could have node. We could have these really are fast. So if anyone wants a new kernel running for pause, please ask and we can take a look at how that's possible. Where can we take pause? Jupyter Hub is a project that is being developed very quickly and the whole Jupyter notebook also develops quickly and has lots of releases and new features. So we can incorporate that into pause. One of the interesting ones that already is there is JupyterLab and if we that's not what I wanted. I'm sorry. We have 10 minutes left. Thank you. That was a perfect moment to say that. So we're here on the traditional interface but if we change it here we have a secret interface that's called JupyterLab and it should be a little bit nicer and this will be fixed soon but it has very different interface and more modern I think and this is what's actually currently maintained by the JupyterLab team a lot more than the Jupyter interface. One of the reasons that we don't have this as default yet is that if we open it here the same book as you can see it's already running because I was running it over there. We don't have the same public link that's one of the extensions that we need to figure out how to do for JupyterLab but it's a very interesting interface for people to use and the public link can be figured out just by changing this to public or changing the link over here we can copy shareable link and this if we just go public should yeah it did not yeah there's some url hacking there to get it. That's the main reason that we haven't switched yet but it's a nicer interface overall so as I mentioned adding new languages to be used is very possibilities are very vast we probably add Julia hopefully by the end of the hackathon and I mean it's just a very long list of possible kernels over here we're not adding them because maintaining this is not free not free of effort so whenever we have a request we'll probably add it we also need some extensions that could be used to solve these issues allow a schedule of execution has been a dream of mine for a few years drafts and publishing would be nice as well you have Jupyter Notebooks have by default a versioning system that is being marked as checkpoints that all the versions of the previous versions of the Notebook also stored but a way of presenting that to all the users would be very nice so kind of like have drafts and publishing so that the public could have a more polished view of the Notebooks and have some kind of source control like Git would be very nice as well because right now it's kind of hard to even for advanced users to understand what's going on on the versions of the Notebooks are were there any questions for for me? this is the end not yet, I don't see any questions but people are free just feel free to ask any in the YouTube chat I also have the YouTube chat open so I can respond to anything and well so I'll be available as I said in the beginning for all anyone that wants to hasn't tested pause yet and want to use it I'm not the only one who knows how to use it so you can ask other people in Telegram, IRC or we work adventure there's lots of people that can help and I'm available as well I can do session to help with your particular Notebook or script um Susanna is asking if there are any challenges with uploading images for example um I've done a few image uploads from pause but the bigger challenge that you have is to use this interface to get images here so what I usually use to upload images to comments when I'm doing pause I don't know if I have any uh yeah I'm not sure that I'll have one here but what I use is something that I'm getting images from some other source because sending images to pause is not easy in this interface so getting images from like scraping a website into pause and then sending it to to have some here uh no this was just Excel XML and sending it directly to commas is something that I've done in the past but doing it directly with images on your Notebook is not as easy it wouldn't be my tool my tool of choice I have other questions there's only three minutes left I think let's wait and then we can wrap up yes I think so no other questions I do have one question for two first is can you import Python module in your system um yes yes you can it's actually let me share my screen for this um UV actually made some magic that we can import things that other users wrote in the file system and you can definitely import things that you yourself wrote so it's not I mean this is just a Python so there's a Python kernel running in the back so you can really port anything over here I don't normally use this so I don't quite remember the syntax that UV created for this but I can look it up and send people send looking what's the it's more of a call-out right Susanna mentioning that we're meeting the Mad Burns in work adventure after this workshop for Jupyter Notebooks and I'll be there as well I'm not sure how useful I'll be there will be plenty of people to help but let's go over there as well awesome so I think we're dying and we can wrap up thank you so much thank you see you next time