 Okay, with that being said, I guess next is our panel discussion. I'll switch to the notes here. Yes. Unfortunately, not only instructors from the first two days were available, but at least we have some alto people here. Yeah. It's basically like our team here. So, yeah, this is something that we tried a year or two ago and worked really well. So basically, um, yeah, like, think of what you'd like to discuss and send it. Someone's typing a Jupiter question. Do you use Jupiter for training? AI, machine learning, image analysis algorithm. I mean, I would start with Jupiter for most, like, for training a relatively simple model, I would start with Jupiter, but then at some point, when I'm writing the model, I would probably take the model definition part, for example, and move it into a Python file and module. Yeah, what a problem can happen with Jupiter is that, like, it's by design interactive, and an interactive is all fun, and if you're actually watching the screen and actually typing commands. And that is, of course, when you're prototyping a model or something like that, you're actually doing it. But when we're talking about like longer AI training, usually interactive doesn't cut it. Like, there's no, like, in, like, Facebook is writing a llama or something. There's no one guy running Jupiter cells. They have a non-interactive script that they run on a compute cluster. They were using, like, for example, for llama, they were using two compute cluster with huge amounts of GP resources. And there you cannot anymore, like, like, if you're doing like a big AI training, you usually don't run it in an interactive mode. You run it non-interactively. And then you store the model checkpoints and that sort of stuff. And you store the results, maybe in a tensorboard or one DB or something like that to monitor the training progress. But of course for prototyping and that sort of thing, running Jupiter is good. But then you usually need to have access to a GPU card. And in, especially in compute clusters, GPUs are usually demanded by these longer-term jobs. These jobs that run for days and interactive usage basically means that it's idling, the GPUs idling most of the time. So usually what we recommend is that people who are actively doing, like, model development, they get a cheap gaming GPU to prototype on with Jupiter or something like that. And then they move on to compute cluster to run the actual training that takes days or even longer. There's one question about benefits or disadvantages of Python versus other scientific or other programming languages. The example given here is Matlab. My personal take would be one big advantage of Python is that it's open source, mostly. There might be some packages where it's a bit more difficult that rely on the proprietary software, but overall it being open source is a big benefit. I have the impression at least that Python is better when it comes to backward compatibility than, for example, Matlab. I think Matlab has a good track record on that. But I'd say that Matlab is basically like, you get what you buy because it's a commercial product. You get a certain, like there are many answers and many programs that are designed for doing some coding or calculations or running some simulations. For example, Matlab is very popular with signal processing people, electrical people and that sort of stuff because it has good support for that in the toolboxes. But it's like, if you want to do Matlab for web scraping, it doesn't have the connections that Python have to other things. But it's very good at those things that it's been designed to do and what the developers provide. But it's not like a generalist programming language, what Python is as well. Nowadays, Matlab does have a lot of interfaces with other languages. So in the end, it's a bit of a style question. And one clear thing is that if you use Matlab, whoever you think might want to use your code also has to have Matlab. And that means they have to pay for it. So I would assume at least that Python code is more widely used just because there is no financial barrier to using it. I remember once when I was starting in a previous research group, everyone that comes in says, okay, who has the bootleg Matlab copy? But I never did that because I use Python and it's free already. So even though it is available, the fact that you have to deal with licenses and all that makes it harder and your work less reusable. What's the best way to export plots if you need them as vector graphics? I think Uplotlib does support vector graphics, right? Yeah, like probably most of the plotting libraries you could find a way to tell export to SVG or PDF or something. So basically, let's see. Now we're getting lots of questions here. Are you planning to run a Python course on AI and ML? I had answered that up above a little bit. And my general thought was there's so many courses about AI and machine learning out there that's not our main target. There's a similar question right below about parallel programming, which we covered a lot of things really quickly and didn't cover it deep in a lot of things. There are a lot of courses out there and materials out there. So yeah, I'm not sure if we can actually get 500 people or even 100 people in a course about MPI or parallel programming in general. But you can study it and then talk about it with your local IT people, hopefully. In both cases, I think there's this kind of like in the industry as a whole, there's this kind of a situation where the examples and small courses on how to write an MPI hello world or how to write a Keras or PyTorch machine learning thing that analyzes the M&E's numbers or something. There's lots of material on the first part of the thing. And then there's usually like how do you scale it up, how do you scale MPI up or how do you get a big machine learning pipeline or deep learning pipeline, training pipeline working. Then it goes like super technical super quickly and then it gets into this kind of a valley where usually you cross that valley only by having engineers or somebody, a super person who actually constructs huge scaffolding that you can cross the valley. And of course, like big companies like Google and Facebook and those kinds of companies, they have engineers who do that kind of scaffolding, but teaching that scaffolding is very hard. I think the biggest issue is that the teaching that in a general way is often not possible because what you need to do depends on your particular field or particular problem. So we can teach basics of MPI, how MPI works with our ranks, what functions are available to you. And then we can talk specifically about your problem, your research field or the program you're writing and talk about how to apply those, that framework. Or we can teach how to do MNIST with PyTorch or do image recognition with PyTorch, but then you will have a special specific case. And most of what we, those are, we can give you the basics but then from there it's too specific so it really only applies to you and a small group of people. And then we just talk with three people in the room and that's fine but it's not a course. It's a garage session, which is a very useful thing to have. Yeah, many of these things which we're talking about or these other courses requested, they already exist or you can find a good tutorial online. And we very carefully targeted this course to things that are important for a junior scientist but are not really taught other places. Or you might not know about because of course you have to go follow up for most of these things. Can we talk a little bit about what our daily jobs are? So how do we relate to researchers? Well, I think most of us mainly help researchers with a variety of questions when it comes to programming. But we are mostly, I think we are not solving the scientific question. We are solving the implementation of whatever they come up with with their solution or enable them to use that solution or make it available to others. Exactly. So that to me at least is one of the issues with specific questions for specific software where I would commonly say ask an expert in your field. They have a much better chance of having in-depth knowledge of okay, these are the tools that are currently state of the art when it comes to analyzing the analyzing tools or analyzing data. We can of course also search things but we are not commonly using these tools ourselves most of the time. There might be projects where we get into connection and see things. And yeah, if we see that that works well or is well documented or something, we can sometimes make suggestions. But on a general principle, they are highly specialized software where we can help you get into it or if people tell us that they need something done with a certain software or so. We can probably set up a system that they can use, kind of building a small prototype that they can then expand. But on a more general level, we are not the experts in the software, I would say. Any other opinions? Yeah, I'd say that this course, you might get this impression that you start with the coding, which is like NumPy and Pandas and that. And it quite quickly goes into actually what you're doing is doing library management and install independences. And that's of course where we usually help our users because if you know about the scientific subject, you know about the context of the functions you're calling. What does it mean to do a microcopter chain or whatever? You know, a context of where do I use this genome splitting function or whatever. You know the context of the function, the mathematical context and the subject context. But we usually help with that annoying part, which is like, okay, how can I get this working? This is unfortunately a big part of the whole field because there are so many, so much available. And of course, everybody wants to utilize the tools because if you've ever tried writing, for example, Fortran code and then you get some solutions out of it and you store it and then you have to think about, okay, how do I even visualize this? How do I plot this? Because it's like a Fortran binary format or something. Like nobody wants to do that. Like nobody wants to write their own data readers or CSV readers or that sort of stuff. Nobody wants to waste time on that. So you want to use already existing tools. But of course, like if you want to use the already existing tools, you encounter a lot of like hiccups with those tools. And that's where we usually jump in and help the users. We understand enough of the context to understand what the tools are supposed to be used and that sort of stuff and what the user wants to do with the tools. But usually we don't know about the field that much. We mainly know the general idea about it. And then we can figure out how to apply those tools to that specific case. I like question 42. Do you think Python will ever become outdated replaced by a different language? Some people seem to say that R might not be used anymore in the near future. I've put an answer in there. I think it's possible. I don't think it's likely anywhere in the foreseeable future. Since the ecosystem has kind of achieved a critical mass, provides so much possibilities and has addressed the issues that the language has. So there are all these bridging to other languages where you have a lot more efficient ways to do certain things, make the disadvantage somewhat less. I would say Python seems to have this really good balance between power and user interface. And also a way that it moves slow enough they really think about how the language is developing. It is being actively developed. There is one little design choice that it can't do multi-treading. We make these ways to get around that and multi-treading happens in the libraries anyway. So it's not really a big problem. The way I could see any language gets replaced is by the design issues becoming problematic. Or by a completely paradigm. Python has this kind of tendency of whatever people say. If people say that they don't like a feature in Python, suddenly there's a package that somebody implements. For example, Python doesn't do static typing, but nowadays people have written extensions for static typing wherever. Or they try to do typings and they try to do typing as much as possible in Python. Python is object-oriented and it's functional at the same time. And there's people who like the functional side and they write functional programming only and they try to implement their stuff as functional programming and they find right extensions to provide that. And then there's people who like the object-oriented style and they write extensions that make that easier. And then it's like, is it even the same language anymore? It's like a completely different dialect of the same thing. And it's very hard to say like, what is the core language in Python is so adaptable and I think that's the main thing why it's so popular. That you can do all kinds of stuff with them. There are libraries like, I mean, I guess TensorFlow is a great example. It is essentially declarative. So Python is written to be, you know, there are different programming paradigms. And Python is not written as a declarative language, but there are libraries that actually make it declarative. It can actually, depending on what library you use, it can use it a completely different programming paradigm. It's extensible enough. And also with the question about like when people are asking there about R, like I like R in many cases. Like for statistics, I think R is a wonderful language. I wouldn't again do web scraping in R, necessarily all web servers or something like that. But again, it's not the forte of the language, but it's very good at what it does. And like, I think the thing with the languages is same as with natural languages that are people actually using it in their everyday speech, basically. Are people writing like new stuff using that language? Are they creating new things? Or are there like songs that some old person, like a hundred year old person remembers and that's the only recollection of weird that we have of the language and then we record it on a tape and then we like remember that we used to have this sort of a language. Like languages are only alive when people use them like in a normal case. I think maybe some linguistics might have a different definition, but I think for programming language, the main thing is like who other people are using it? Not whether I'm using it correctly. If I have nobody to speak with that language, it's not really helping me in any way. It's about the whole like community and ecosystem. And I think Python currently has a very healthy ecosystem. Of course, there might be new things coming, but it's hard to tell the timelines are so long. Some questions about what to learn next. So there's not just the programming language, but you might have seen a lot of what we hear is about how the programming language interacts with the operating system, the data, things like that. And that's another good thing to think about and follow up on, no matter what language you're using. Question 45. If you want to learn Python or any other language, it's good to have a problem and a deadline and then you should try Advent of Code. Just advertising Advent of Code. It's fun if you have time.