 Should I do test-test? How do we know? It's on. Okay. Oh, sorry. I am standing in the wrong spot. Good evening, everyone. Welcome to DataKind SG's event, DataLearn. So I see quite a few new faces today. So welcome to DataKind Singapore. We are a volunteer chapter in Singapore. DataKind actually originally started in the US in 2011. We are a chapter. We've been here from 2014. So the DataLearn event is to... We conduct DataLearn events to have our volunteer base learn about new tools, best practices, and so on. So this DataLearn is in preparation for our DataDive, which is a hackathon-like event, but it is non-competitive, where volunteers come together to help nonprofit organizations with their data issues, any problems, any insights they want to derive, and so on. So that is next weekend from April 13th to 15th. So do sign up in our meet-up page for the event. RSVPs are open right now. So one of the main goals that we believe in is reproducibility of work, which is why we have this event here, which is focused on Docker. Hope you get good experience today and you're able to follow up. You put to use what you learned from the workshop in DataDive next time. We hope to see you and also in your work. Thank you. Let me hand it over to Paul, who will lead the workshop. Thank you, Archana. Let me just put this mic, if I can. So good evening again, everyone. So today, before I move on to the actual presentation and workshop, because our platform, the Play With Docker, for those who have received the mail, sometimes it has bandwidth issues. So we might as well download the things that we need to do. So that while I present a talk about the introduction or overview, you can sort of do the workshop until task one. So at least we save time by doing that. So what I'll do right now, if you can go to this link for the slides, and then for those who needs the internet connection, that's the Wi-Fi details, we'll move forward to this slide, go to the actual Jupiter Mini workshop, go to this tiny URL, Jupiter Lab, and then if you can go until task one, which is basically pulling the Docker image, we'll explain later on how we go through the rest of the workshop. But at least to save time while I speak, you can already download. So at any point, if anyone has a problem or question, just raise your hand. I can help answer or we have mentors around also who can help. So I assume everyone, because we've sent the email, has already an account in Play With Docker. If you don't have yet, kindly do so. We will do this later when we do the workshop. And then this is our agenda for today. What we'll do is to give a context on the workshop, we'll recap on what we've discussed on reproducibility. For those who watched the first video, thanks. That will help set the context of this session. And then we'll move on to the Dockerize tools, the data tools that we use in data kind like RStudio and Jupyter Notebooks that are containerized and then we use in the Data Dive. And then this year, we'll be introducing a new workflow on how we do the task during a Data Dive, like from volunteer when I do the analysis, where do I send this output to, where do I check in and so on and what happens next in the pipeline. And then last, we'll move into the Jupyter Lab Mini workshop to explore on the new IDE or the front-end of Jupyter Notebooks. Yup. So we'll start with our reproducibility so that everyone will be on the same page. So what do we mean by reproducibility? We expect, let's say, Bill, let's say Bill is one of our volunteers. Bill has an analysis, like by doing step one, two, and three, we determine or have an insight that program A of this nonprofit is way better than program B. For example, that's the claim. Of course, let's say on the other hand, let's say we have another volunteer called Ted. Ted should be able to reproduce whatever Bill was doing what Bill is claiming. So what he should be able to do is be able to get the code from Bill and then on Ted's machine, let's say I'm Ted, I'm able to run through, hey, I'm doing step one, two, three, and whoa, I am able to reproduce the result. So that's the expectation. Because sometimes you'll have, hey, this code is not running, I cannot reproduce the machine. So we aim to have reproducibility so that one year down the road, two years down the road, we can still reduce, let's say, Bill's analysis. So how do we do that? So in data context previously, we used to version our codes so that, let's say the version one of Ted, sorry, Bill, version one of Bill's analysis was indicating that program one is better. So that's version one. And then later on, with new data, then you, hey, there's a bug in the code, you fix it. And then after the fix, it turns out that program B is better. So when someone wants to replicate this, at least they know, hey, which version of the code did you run to arrive to that result. So we should be able to do that. So previously, we were able to achieve that via the version in the code. But after that, we realized that, hey, code alone is not enough to achieve reproducibility because even if you have the code running on a volunteer's machine, volunteer's machine could be different in many ways. One could be running in Linux. One could be running in Mac OS. One could be running in Windows. And sometimes they don't have the base libraries to be able to support to run the code. So there could be a lot of issues there. But since in the next, in this space, part from version in the code, in now also version in the environment. So you have both version in the code and then version in the environment so that when you have it together, you'll be able to reduce the code more effectively. And then just to give a background, we discussed this also in the first video that we watched just to give a context on some of the common Docker or container terms that we have. We have three short terms, which is container registry. Container registry, even think of it as sort of a market, let's say a sort of repository of various IDDs or images or environments that we have. And then, let's say, Ted wants to replicate Bill's analysis, right? So what Ted will do, Ted will go to the container registry. Hey, Bill, what version of the environment did you use for your analysis? And then Bill says, hey, for the new analysis, I used version two. So what Ted will do, he goes to the container registry, finds which version two of the environment, and takes that file. That file is called the image. That's the Docker image that we pulled from the Docker registry. So once Ted has that image, he runs that image in his machine. Once he's running, that instance of the image that he's running, that's the container. That's the real ID that Bill used for his analysis. So next, in DataKind, we have various RVs that we use for analysis. And I understand who uses R in this room. Anyone uses Python? Anyone uses other languages apart from R or Python? Yeah, because you can use Kala or some Java or C-sharp. But in DataKind, for now, we serve, I think, four potential ideas that a volunteer can use during DataDive. One is Jupyter, our notebooks by Jupyter. We have Python notebooks by Jupyter as well. And then nearly in the half of last year, or I think during the first DataDive last year, we also introduced RStudio. So it's your RStudio, but it's running in the browser. And we also have a version for that. And then today, we are launching a new ID that Bill will be supporting going forward that is Jupyter that will be the context of the workshop later. So just to demo, I'll just demo this quickly. This is one of our image from our stack. I'll just show how easy it is to run an environment. So I'll just copy this. It's basically a document which has some ports to expose. And what you can see here is KIO. So KIO, as explained a while ago, that's our repository where our images of the environment is. And then this OJoy RStudio, called 1.0.21.0.2 is the version of that environment. So that's how we crack it. So I'll just copy this. I'll go to Docker Playground. I'll create a new instance. So this is like, hopefully, we don't expect this is a bandwidth issue. So I'll just click, paste it there. And then what it does is it tries to pull the image from our repository, which is KIO. And then hopefully once it completes, we will see a port, export visible here. And we should be able to access the RStudio IDE from the browser. So current is extracting. And then, surely it takes maybe two minutes or so. Yeah, it's there. So it's done. It has the port. I'll click the port. And it should open the login. So I'll just put RStudio. By the way, all of this, if you watch the first video, all of these are in the repository. The instructions, the documentation. This is in the GitHub repository. So you can try it on your own also. RStudio. RStudio. Sign in. And voila. You should have the RStudio IDE. It takes a while to do that. So once we have that, let's say I just open a file here. So it's like, if you're familiar with RStudio, it's basically RStudio already. It's just running the browser. We'll just run demo graphics. So any command that you need, you can run here as well. So I'll just, so I'm context-switching from file and just enter. So the blocks you can see from here. So it's a page like a normal RStudio. So that's one of our ideas. For Jupyter Notebooks, you can try also on your own maybe after the session. So that's one example of that environment that we are supporting. So let me go back here in the presentation mode. Yes. You can save, you can save anything you want to save. Does it get saved? So good question. The current command that I gave here, I didn't put a dash peak, which is the volume. So currently, it's a volatile. So during the data dive, if you're not missing our other examples, we usually map the host machine where you can put your files there and then the containers path. So when you map the tool, whatever you save in the container gets saved in your local directory. But it's okay. During the data dive, we have a helpdesk for Docker. So we can come and then we'll resolve issues in there. Yup. So next is the data dive, which Archana has explained. These are just links in the previous data dive that we have last year. And then we'll mark the hack done. There's no price. We do it for good and then help our non-profit partners. And hopefully we'll be able to use the tools that we introduce here. So in this data dive, we want to structure a bit so that at least it will help us manage the deliverables and then how to ensure that whatever we check in or put in the repository so you have three personas here in the workflow. The other volunteer who will mainly help in analyzing, getting insights from the data of the non-profits and then produce a deliverable. The deliverable could be a number of things. It could be a notebook, Python notebook or our notebook. It could be a script, a script that you've written in our studio. Maybe a visualization or the dashboard and then once you're ready with that sort of a piece of configurable item the volunteer will do it. They will push it to a branch. We call it an integration branch for now. And then in that branch later on, the data dive will have a detailed instruction on how to go about this step by step. But just on a high level, once it's in the integration branch we have another volunteer called Dr. Captain. Dr. Captain usually name them because they will be helping us curate the deliverables. So curation means if you watch the second video, that's for the Dr. Captains. What they will do is they will take the deliverable from the volunteer and then Dr. Captain is like Ted. So what Ted will do is build things that so and so is working. So what Ted will do is get the deliverable, get the corresponding environment and try to confirm that is it really working as expected. So once Ted confirms or the Dr. Captain confirms that it's good and it's reproducible this piece of code let's say a Jupyter notebook or a script at the top will put metadata that this particular piece of code is working on environment version 2.0 or something. So next time we will run that script we know which environment I used to run this analysis. That's the Dr. Captain. So once the Dr. Captain is okay with the result from the integration branch Dr. Captain will push into main branch or in GitHub terms that's the master branch and then we have another persona which is the GitHub admin that will sort of try to review the final review of the deliverable and then approve if it's any questions so far in this workflow we'll have a more detailed at least maybe instructions during the deliverable. And then so I might be a while ago in the video, sorry. Hopefully I did some good gestures. So these are the list of our previous videos. If you haven't watched it, we encourage you to watch that. The first video is for the Dr. Macy's and Dr. F's data tools that will give us context on how to use the image what's Dr. and all of those. And then the second video is more of architecture and how to curate the deliverables to ensure that to help reproduce the volunteer's analysis. And then, hey, we're here. We can start the Jupiter Lab mini workshop. So if you come through the document at least if you can reach and task fund the blue degree because that's the one that is taking a long time. What I'll do is I'll try to follow the document so that you can follow along with me. But if there's one with issue I think check if I already have have something so let me test a bit. This is the previous image type food for the Jupiter Lab. If it works, then that's our backup. But anyway it looks like it's working. But for this, if you're starting from task one you need to, in this instruction if you're following, you need to create a new instance. So this is the new instance, right? And then the next step here is the next step would be to clone the repository. This repository contains our workshop materials and demos and files. So we don't need to get the files first. And then once it's loaded the next is to give set up permissions. I mean step five of task one. If you want to follow, copy that and then paste and then enter. And then the next one this is usually the one that is problematic because we're I think we need to put a question. Question, anyone who is stuck? Can you raise your hand if you're stuck anywhere? How about the rest are you able to follow the instructions? So I'll continue for now. If you're stuck anywhere at any point just raise your hand. We have mentors around to help each other. So I mean step six. Usually step six is the one that is problematic. We're using name for docker because it's free. And of course sometimes there are problems with the bandwidth issue but if all works good then we should be able to pull an image when we copy this. So I just copied the command from step six and we should be able to get our image. So partly what it's doing is pulling the image it's going to extract and then once this is done it will launch the Jupyter lab. This is the one that is usually taking a bit of time. Once you anyone who has finished task one already okay that's good. Anyone going through task one? Task one is the one that is usually taking long. So for this I'll just explain a bit. So while it's loading I'll just go back to the document here and I'll explain what is this document doing. So I'll just open this. So here, so this is normal Docker command, Docker run. So what it will do is it will run if there is any existing image in your machine it will run that this particular image which is the Jupyter lab 1.0.0. However, if it doesn't find anything in the machine what it will do it will go to the source which is from PIO and then it will try to pull the image from there. Since our instance we just launched it does nothing. So what it did was to pull the image from the repository and then pull and then once it's pulled it will run the container. So here the next one is this one is to enable the Jupyter lab option. This particular base image is based on I think a mini anaconda or something. The base image of this supports both Jupyter lab and Jupyter notebook. So if I don't put this Jupyter enable lab 1.0.0.0.0.0.0.0.0.0.0. It will just launch a normal notebook. So that's why we put this for the extra functionality. Remember that for Jupyter there are two IDs currently that they support. One is the normal notebook and then the Jupyter lab which is the next generation frontend for Project Jupyter. Previously in conferences and I think from their documentation the plan was to eventually Jupyter lab will replace the Jupyter notebooks. So the next one is this which is the port. You have 8888 and 8888 here. So why to the first one is from the local machine where this will be running. And then the second one is the one that is inside the container. But since we're running Jupyter 8888 is the sort of default port that we use for Jupyter. So that's the one that will be accessing. The next one which is the one related to the previous question a while ago, like if I have files where does it how can I run it from the IDE. So this is how we map it. This first folder, this is the one that we just pulled right. You remember we did a git clone of container self. This is where it went. This is from the local machine. And then the next one the home job, that's the folder from the container. So let's go back and hopefully hopefully our pool is finished. And it's done. So once the pool is done is you'll see a token here and then a port link here. So what you'll do is to pick this and it will open a page. Sometimes this doesn't work. I don't know if fortunately it worked today. So here it will ask you for a password or a token. So what will happen is we have the token here, right? Just click that. Of course this won't open local rows, but I usually do that so that it's easy for me to copy this. I control C, close this and then the actual notebook provides us space and then lock it. Let me check. I have pink tabs with Jupyter notebook so let me figure out which control C and then close this and then is this good enough? It's nice. So I'll just paste this lock in. If this doesn't work because it's a different lock, sorry. I'll close this. I think it's on the other top. I open the windows. Let me open those lists and then I forgot what was working earlier. So I was entering a different idea. So now once you see this, this is Jupyter's lab interface. So this is the end so we launched the Jupyter lab so that's okay. The next thing that we'll want to task before we move on to task just to explain the different areas of the Jupyter lab we've got Minubar cyber and main work area. So here here you have the Minubar which is on top and then we have the left side bar on this left side and then the main working area. The main working area is usually where we do all our launch of the different nobles here. For now you can see Python 3 because when we did the image we only did Python 3 but ideally the feature we need are computer also if you need other languages and then apart from that you have the next editor which is usually already an existing feature. By the way if some of you are still working on a task one, don't worry this is being recorded and you already have access to the lab, you can also continue later so I'll just continue for now. So what's next in our task? Next task is to sort the cells so from the browser the will click sort me out I find a notebook so here in the file browser the will click sort me out I'll just double click it will open it will open this and then by the way is the size okay or is it too big? So from here you'll notice that we have a bunch of cells which is like a normal notebook and maybe the ordering is not good because we have the first step which is see on the bottom so traditionally what happens in a normal notebook in the current notebook let me open a bit on this side I'll just open a normal Jupiter notebook so we have some comparison on how we do things previously our short notebooks is one of the three platforms that can post either Jupiter notebook or Jupiter lab at L share that later I'll just open a sample notebooks so that we have contrast what's different from the part of the notebook and Jupiter lab so here you have the same repository or at least similar I'll just go to the workshop and then let's say I'll open one of the notebooks there Jupiter lab you know how the just try the normal I'll just open a random notebook so that's the so here let's say this cell if you want to move out what do we do in the current one so here we have the arrow move selected cells down so let's say imagine if your cell that you need to move is in the bottom this one is near the bottom I need to move it this out so what I'll be doing I'll need to click this how many times how many cells you need to move but in Jupiter lab what enables has to do is I can click this side I can click both cells because essentially this one which is the label mark down label also a cell I can click that I can shift click this and then click sorry yes okay okay for those that are stuck there's a instruction there because partly we're using a free platform so sometimes the bandwidth is not good so what we should do after the picture there's a note that if it stopped here if it stopped click delete from this interface click delete and then once the instance is deleted create a new instance and start from step 3 yep unfortunately we need to keep doing that until we have this 8888 point yep unless there's another way for those that have a docker installed in the machine you can just get load in your local machine and then run run the docker command from the lab that is one option if you already have docker installed but I assume a number of people who won't have docker on the machine for now during the actual day to day if you have problems installing docker then we can't help you so let's say you have several tries already including the image don't worry if you can finish it during this workshop you already have instructions it's also being rewarded so if it doesn't happen during this workshop I'll still guide at least you'll get the overview on what features are available in jupiter lab and then later on after the session you can try again yep so I'll just continue borrowing sort cells how do we sort cells in jupiter lab just click this this one is ok but you're signing show a little bit more of the screen just click this shift click and then I'll just move it drop there so now we have drag and drop for the cells we don't have to like click up up up up until so many cells that we have to move so you can drag and drop your cells down so partner we're in the task group once we've got the data we put it up and now we just need to run this I'll just run this so that this will get to know that hey it still functions like normal so here I'll just click run which is the normal interface of jupiter run all cells it will run all so here we're getting the data display the table from the data using pandas data frame and then we group the group by type of the nation in this data we use the nation from red cross then we use a visualization library called dotly we have a display a stack bar chart to you have the different kinds of that nation services and that so you have the visualization so of course normal so what's next you're able to display next is we want to explore more graphs because graph helps us get inside better because it's visual what we'll do next is to explore another one the one that you just saw that was using dotly next we're going to explore bouquet which is also a library for data visualization and just don't click that it's piloted so here you have a bouquet demo and it looks like this in the workshop it says in the workshop it says it should look like this you should have a cell under bouquet in this color chart you should have a pomale for this this is not an issue with jupiter lab this is an issue with my setup in the image but I didn't get a chance to fix it so it needs to be investigated but for now what we'll do is if you see it like this just run all the cells and then close this and double click this again and voila you have the face so it is yet to be investigated why it works but it works once we have that click run all cells from the menu so what we'll do is this one is a visualization library also so what it does is from various different types of blocks it will run through some data and then visualize them in different ways so what I'll do here I'll just run and run all cells so it will build the library and then it should display the bar graphs bar graphs bitmaps periodic table I didn't know you have periodic table but important we don't have we have important and then the other one is the other one is an arrow but this arrow is part of the workshop so what we'll do next as you can see here you'll see an arrow also in the workshop what's that so here scroll down you can see various graphs and then jubbler supports context menu so we're going to use context menu to delete this cell which has an arrow there but basically it cannot generate the graph because we have missing data because I didn't load the data so we're going to use it we're going to delete it but previously when you delete the cell you can just do a dd right and then that's about it but there's more to that before I go to the division part if you right click not only that you can delete cells on that context you can also do other stuff like split cell split cell is not in the workshop but I think it's cool to show so if you have like a very long cell and you want to split it let's say here I want to split the cell in two so I'll just right click here split cell and then I click here again and then I'll split here if you have a long big, very big cell you can do a split cell but since our objective here you want to just delete the cell oh no I split the cell three times so I need to do delete three times but good thing there's also undo so I'll click we're just and then we are back to the one cell which we can right click and delete and then it's done so far so good what's next? we can see the visualization we have the codes running how about we don't want to see the code usually when we do the presentation during the data dive right we just want to present the outputs of the graph we don't want to like stay in the vision of the code so what we can do is let's say here it's a lot of code and then graphs we want to limit only to the visualizations so Jupiter lab fortunately has a feature called if you go to view you can collapse all code if I do this then you'll just be left with the visualizations and then you can just explain how does it work the table and then the last one next thing collapse we're now in step six past two now we're on the left we're left with just the labels and visualizations so what to do next is we want to put these two visualizations and then the bar drop in their own windows because in Jupiter lab as opposed to the normal Jupiter notebook we now have the ability to have the layout of different sort of windows so what we'll do is this output we already have this port is in its own windows just in case so that at least we get to appreciate the workspace right click this and here you can see a great view for our code so I'll just click that we want to examine two two graphs so for the bar graph we want to view also and then after view view for output and then here we'll use Jupiter labs layout feature we can drag on the right here we can drag on the right also okay and then this one we can drag you can basically layout accordingly just a portion on this side yes how do you zoom out across let's say you see in this small window this one how do you zoom out also you want to view this actually it's part of the lab but if you're interested it's a control shift and turn yeah but we'll let's not get ahead of the pictures we'll just go back for that we'll go through that here we have the flutons by ear and then we have the iris another graph at the bottom so now what we want to do is let's say just following the workshop let's say what we want to do is apart from doing the layout we want to see this dynamic update of the graphs so here remember we collapsed the code a while ago if you see these three buttons then it's to expand so we now have the code that generates these bar graphs what we want to do is let's say I don't like this is this is a row let's say we don't have this thing that's wrong instead of suppose it should be oranges so I'll do oranges here and then let's say this one let's say iris making 15 we have a count of 5 instead of 2 for this particular data so I'll just put 5 so before I run this notice this area I'll just see a little bit more of this so this one what we expect is we can see apples here for now right you can see that the count in 2015 is 2 since we changed the code here this apple should be oranges and then this count will be 5 but remember this is a separate window so we also have a separate output in our normal Jupyter notebook but since Jupyter lab whatever you see in Jupyter lab to say the outputs they are deriving from the same model they have this model based architecture so whatever changes in the model whether you have a few outputs there or it will be updated so I'll just show you that in a bit so this one I'll just shift enter and then see both screens are updated yeah cool and then of course it's not oranges also we have oranges there so we've updated this so this is we're done with task 3 we'll move next to task 4 which is how do we clean our place we have a lot of clutter currently here we want to let's say start new normally you can go to various windows in this layout and then close them up there's also another way because I want to introduce you to the side panel it's tabs view then here in the tabs and just close the tabs up so just close okay and then close the tabs and then we want to shut down the notebooks that we ran a while ago and shut down from this running panel and then we're clean to talk to the base model that's how we clean and then let's explore another feature of computer lab which is support for markdown I'll just open this so what I'll do I'll go to files in the files you'll see markdown python what I'll do I'll just right click so now you have support to open the markdown as in an editor and then open the markdown in the preview so if I open in an editor I can have something like the markdown editor but usually what you want is you want to be able to type in your markdown editor you want to see how does it look even in previews so since we have the layout feature why don't we just layout and then open another one so I can have a markdown view and then since you can drag and drop and snap and just snap it to the right markdown preview and then let's say I'll tap to here another handle of the computer lab then what's on the other side is some so it's you get the feedback right move after we move so this is easy for you don't have a feature what to do you type and then open in the browser okay and then go back so it takes the sort of cycle but if this is instant it's good in a way so the next is let's explore another feature so here before I move to the next feature I forgot to install my lab clip so I'll use this launcher I'll run in the terminal so we can do a clip install here it's called marker so it will install the corresponding once it's once it's done I'll go back to this same python so same markdown file that we are what we have here is the markdown editor I can right click create console for editor so if I right click create console for editor I can choose to set the kernel for that markdown file and then it opens up on so what does this console do so generally for the markdown file right so you might have like biting quotes there or quotes here test whether that quotes that quotes it really well what I'll do is I'll go there put my cursor there shift enter you'll see it there in the console that's quite simple let's have a more dense code block go there and just shift enter and then it runs in the console and then of course if you want to have a visualization apart from displaying the table go to another code shift enter and then you have everything so at least by that way it saves you the cycle of running again pasting the code putting it into an editor running there but here it's just one stop shock click on the code you want to run shift enter and then we have our Jupyter Lab it's in the workshop as well so the next task the second to the last task that we want to explore just like what was a while ago what about if you want to zoom in to each of the files right how do we do it so Jupyter Lab also supports that so a while ago we have this zooming each of the files you can control shift enter and it will zoom to the front window that you're viewing you can even like check the next window so to check the next window instead of your workshop you can control shift and then the right bracket you can view it like that and then shift left bracket to go back to the previous window so you can basically look through it so even though even the console you can do it so if you want to go back to the multi tab view just click control shift enter again and then you're back where you are so it's easy to like I want to zoom in because the window is too small zoom in single document view and then once you're okay gone you can go back to the multi window view by just the shortcut which is control shift enter and then lastly what we'll also look into is explore the file formats so in Jupyter Lab Jupyter Lab supports a number of file formats some of which you need an extension in order to support like J&Json but some are also built in so what I'll do right now is here in your folder or folder file browser you have a data folder there I got this data from the main Jupyter demo but since so that I don't have to open another window I just copied it here so we have a few files here we have before we move on our window party is cluttered so at least we'll make it demo demo just key up a bit so that we back to class 1 which is a cleaner workspace so once our version is clean I can also drag and drop the files from the browser drag it into the window and I can view the files accordingly so I just drag the it's a picture it's a JPEG file I can just drag it supports that there's also a Vega lite file which is a Json file I can drag that also and I can do the graph that is generated accordingly and then let's say there's a CSV they want to have a big view of the CSV to have a feel on how the data looks like I can just drag this CSV and then at least you can see there I can scroll down by the way I don't have the actual file here but from the original conference demo for the Jupyter lab they can support, at least they claim to support it I think they demoed it also columns by 1 trillion rows this technology I think they use phosphor.js anyone heard of phosphor.js before they use that library for supporting this so let's say there's one demo here for phosphor.js where you have a lot of cells you can drag seamlessly and then you can scroll so it's quite powerful I think and scroll if you have very big data and then the other one that I like is the jojson because let's say we have a cell that has coordinates for maps we want to see like hey let's say let's say for example which centers are located which in Singapore or something so I can just drag that file if you have a jojson format for that and then I can just you get there so we have like a WhatsApp shop I don't have to go to the separate browser and then I can have all in one view and just a bonus thing let's say I have a workshop that is printed in PDF I can just go let's say I have this file it's not in the workshop anyway so go back to the room I think we have one PDF file here double click and what is it taking it should support PDF also I think that PDF is my thing but once it's loaded you have the thing there also that means if this workshop you can export it as PDF you can also put it in the file and then you can have the reference from the same windows so I that's no that's not the last task we have one is let's say you go back home you forgot some of the keywords that I've mentioned you want to post that again then Tubular Lab has this staff for commands and it supports Fuzzy Search so if let's say I want to turn the whole theme I forgot which function how to turn the whole theme into black so I'll just type dark for example and then it's there I just click it and I don't want black I want the screen to go back to light again so just type light in Fuzzy Search you can do paper accordingly and then by the way if you want to leave paper here in the settings in case you have other other commands that you want to search that's the main purpose of that thing that's the last task if you've completed that congratulations this is a mini workshop but as explained in this document this is not by all an exhaustive for all the jupiter features I think this is just a tip of the iceberg there's more features there you can even do like presentations but we just think that so that we don't have all night but what we like to do is we encourage you to explore more if you have the access to the IDE you can go to the third documentation which is really good I can buy examples from there as well to learn more about jupiter and then moreover apart from the data dive you show you have monthly sessions if you want to know like what's the next data kind event I want to use my data jupiter lab skills for good so you can find us out in Meetup in DashSD events so that's for the workshop part but wait there's more just present this we have also let's say we use this tool how do we use this tool to collaborate with our other peers let's say we want to exchange ideas in the same file in that case you can have like a shared folder let's say you don't have that shared folder right now where's you I'd like to invite you can you come over here we can interact with the audience so you can try this also but for now you and I are going to working on the same project same analysis what we want to do we want to explore so this is jupiter lab you have the files and notebooks there but let's say we want to collaborate together there's an option to support Google Drive so if you have that settings you can whatever file I have with my Google Drive I can share it to let's say you and I were on the same file for this demo we'll go through the first file that we'll go is to say the markdown so I can see the markdown here this is the markdown that we used in the while ago and then we have a chat window also hi yoke are you there you can see it yoke is there by the way so what we'll do is let's say here I'll put a I'll put here jupiter lab can you put some description on jupiter lab below my below my I'm not writing by the way but you can see that it's updating and then you can see also the markdown between you so we can work on the same document at the same time and it's like Google Docs and just to have another example we have another file let's say open ok hopefully this works because we didn't try run this so in the Google Drive we have a share notebook this share notebook we have get data but let's say if I run this you cannot find by the way each chat is associated with each file so if I do this it's a different context so context of the chat is for each file so hi yoke ok here I have sample Python file let's see whether this works let's say that is 3 let's say add one more so this is working let's say I'm going to run this other file but this is an error I don't have the ablation in this directory do you still have the fix I'm not typing what you can see here this is yoke alright are we running run and then let's say you already run so I run the next one oops data is not defined let's say I run this oh the previous one sorry yeah let's say ok can you run the rest sure so basically you can use this so two volunteers or more think of it as a google doc about you can sort of collaborate work on the same notebook chat on the side hey thanks for the help even though there's an error but know that it's not me it's another one here but it's good for this sort of collaboration so previously it might be hard to share the notebook because let's say let me work on it first and once I run and let pass to you then you can do your stuff but with this feature maybe two or three of us can work on the same and then finish the job more quickly yeah so that's the thanks yoke that's the collaboration feature and then what we'll share also there's more this weekend we just add easter egg we'd like to share some easter egg also so I want to go during the first part of this session we opened an azure notebook so here in azure notebook no this is not azure notebook where's my azure notebook azure notebook is free platform for running jupiter but here you cannot see how do you if I want this is launched as a normal jupiter notebook can you see here like how we're doing launch a jupiter lab does it support jupiter lab right but since we are talking about easter eggs what you can do is click here terminal and then in the terminal type lab oh yeah so that's you can run jupiter on another free platform which is jupiter the one I use that was binder so there are like multiple platforms for jupiter lab that you can use for free you can use that for exploring and learning let's say that jupiter in the data type context if you want to run here on the attacker part captain we'll try to go with the attacker approach so that at least we can version the whole jupiter lab environment but for learning you can store azure notebooks, you can store binder and so let's yeah so as chapter shared we have data dive we can the following we can that is April 13 to 18 before those who haven't yet that's the tiny URL that will point to the meetup and then we can RSVP there and before we thank the sponsors any words from oh yeah we have some azure classes we'll how do we dispute this okay so before you leave we have some azure classes from Microsoft so for all of sponsors paypal thank you thank you very much we really appreciate thank you for the food the drinks and very fantastic and also Microsoft for giving us the free azure classes you can use this to spin like let's say if you're doing deep learning I want to have extra compute using deep learning virtual machine you can use this to spin the cloud and then of course it's not only for the future you can store other features in azure it's what I can see here is $100 for one month $100 for one month it's free money and just thanks Microsoft for that $100 $100 and yeah I'm really hungry thank you thank you thank you yes I mean really we will just in the last years we learned the approach that we initially did but of course during our let's say learning sometimes it's quite different from expectations our daily what to plan and what to expect because during the day of my last year some work because people is called the same where we have some other so some might have issues but it's okay that's why we have the pipeline the pipeline this is probably the view that maybe some might not be able to use docker so they will use their own ideas but at least the deliverables whoever is born here as docker captain then we hope to born here as docker captain really patented deliverable to the docker captain so that at least we will be able to use the docker as docker captain thank you any other question if you reverse to sensitive information will the better views like this talk or approach always be better than private people good question so in the way we do things in data kind we separate the environment that's okay that's for running the movement on the other side we have codes that we run for the analysis and there's a third part also which is data data that this code runs to analyze so depends on the nonprofit on the discussions we have the engagement with the nonprofit some nonprofits they are okay with the public but some nonprofits we need to have NDA to have a private data repository so our other approach is to have private data repository which the data can only be limited any other questions for those who haven't tried the workshop you have the materials when you go back home try again what you call this the image in David Docker hopefully in some time the day where the ban is not that much you can try again otherwise if you are more adventurous you can install it in your machine and then it will come there good so if there's any question feel free to contact me at the meet up or if you're coming for the day the time next week we hope to see you there as well thank you you can just come here and then pick one I think you should come we only have like 50 hours so first come first serve