 Okay, um, let's see who's here. Let's see. So panel discussion so please tell us. I have philosophical questions, debates. Like pit versus come now which one to use the same can be said for instructors from the other zoom meetings and so on everyone's welcome to come here today. I'll be right back. Hello. So what question would provoked the most debate? I guess that's not the direction you want to go. Well, I first want to invite everyone to write in the hack and D with now a header in the in the hack and D call panel discussion. So if you have a question, you would like us to to discuss or just a question to us. And it can be like philosophical put them there and we will see. There is one question about what ID do people use? Well, we could do a quick round. What do instructors use? But do you use Richard if you want to create a serious Python package? So I use emacs from the console for basically everything. And how about you, Thomas? Yeah, I already wrote it there. I'm coming from Java. I'm essentially using Eclipse installed Python Eclipse and use that at the moment. But it has its troubles. It sometimes shows errors that are not there. Yeah, this is this can't be imported. But you can run it. What's your problem? Jarno, what do you use? Well, for editing text and actually often for git as well, I use atom. But for running anything, I run them in the terminal. So I'm not really using it as an ID in that sense. Just do things. Yeah. So is this the same stuff you use when you do really scientific analysis? Yeah, yeah, it is. The original question was about windows. I was using windows mostly. It's now a couple of years ago. But then I was using VS code and basically in exactly the same way as atom because they are almost close to each other. Yeah, that's true. Let's finish up the round. You are next on my Zoom panel list. So I use Vim most of the time. Sometimes it will be Visual Studio Code. So when do you use Visual Studio Code and when do you use Vim? Do you think sort of like when you do something quick, you use Vim or when you get really serious, you edit, you open Visual Studio Code? A little bit depending on the mood. Visual Studio Code, if I don't have to open many, many different files, somehow I'm quicker navigating in the terminal and I'm using a tiling window manager. So if I need to see many things at the same time, I go for Vim. If I just want to see one thing at a time, I go for VS Code. What I really like about VS Code is the language server so that it can auto correct or it can show me typos and mistakes I do like that. Yeah, that is really useful. I think whatever editor you use, I think all the editors will discuss support this in one way or another. But yeah, you should always have this. Always have the editor live check your code if you made a typo in a variable name or something that the editor itself will already put a red line on the red that will save you so much time. Or syntax errors. Yeah, these are other types of things. You can even put something and you're not actually using it. So it doesn't have to be wrong, but it shows you code that is not used and not needed. You can delete. You can make it as pedantic if you want to. Yeah. Showing what's not being used is actually quite useful because it sometimes shows you that you forgot to use something. Yes. Or you mistyped something. Yeah, especially to show that it's not used and you thought you used it. Absolutely, it's not. So how about you, Simo? What do you use when you... Yeah, I'm like a VMA guy. But I use this team oxygenator that's a really good tool for managing like multiple team accessions. So basically, like I usually have like, I don't know, 10 to 20 like team accessions that are basically like the team oxygenator will set up multiple windows and multiple panels and multiple editors and whatever I want to open so that way I can easily manage like different desktops basically but in a shell. So you're basically running five VIMs at the same time in different panels? Yeah, something like that. Yeah, on the background and then I just connect to them and go back. I wouldn't say that it's necessarily the best way of working. Like, I started working before like they were good ideas. Like I used Eclipse in the day and it was crap in my opinion. I didn't like it at least. But nowadays the ideas look much better but the learning curve is too big to change. So it's... You're invested now. Yeah, that's the problem. Reminds me of what Richard said just before we started the lesson. Richard said anything is possible if you have enough monitors. You just open up more windows when you don't have space anymore you just keep adding monitors to your machine and then it will be good. Should we go on to... I want to know Sebre. We have a lot more questions here so we should continue. Quickly Sebre, what do you... Interesting, so I'm not a Python programmer. My Python involvement is mostly debugging. So usually it involves a lot of commenting out code. So I could debug something. But then he's very helpful in that. You could comment out multiple lines at the same time. When I was young and brave I used to use PyCharm but I don't program anymore. And most of my test cases are just bash one-liners for Python. So I'm not a programmer in that sense. That sounds a lot like a lot of my practical work too. Okay. I'm seeing some instability in the HackMD so I will copy out all of the binder session. It might be alarmed. It might jump a little bit. I mean all of the packaging lesson. Yeah. What question do we want to tackle next? Efficient way to start learning a new language. Yeah. Do a project. Yeah. I think everybody agrees. You should have a project that you care about. So not to do list or something or like an example project. Like an actual thing you actually want to build. And it can be many reasons why you want to build it. Either you need it for something or it is just super cool or it is extremely funny or it is extremely silly. But any reason that you have to really want to build it because then you will have that. The toy examples from your own field are always fun or little simulations games things like that. It works. So there is a side question regarding this. People come up with buzzwords like you know Python is good, Rust is good, C is good for this. Different people have different opinion. But let's say if you want to do something if you want to achieve something with Python you could do that. Let's say there are other supporting packages like you know you can use Cython for example if you want to incorporate something else. But just because someone ask says that they are very passionate about this thing it doesn't mean that it will suit you. So you don't have to learn a new language in order to achieve something in my opinion. So you could, there is always option to keep all the languages to a certain extent. I would also say it's also a question of what you consider learning a new language. Because I doubt that you will ever know everything about a language particularly every package because packages appear and appear and appear and you can understand basic and concepts and for that it really doesn't matter what project you start with. It could actually help looking at some rather recent code because newer features and stuff are often not present in all the things or if you start with a completely new project you will likely miss features that were only introduced recently. At the same time you can argue that if you use them your code is more compatible to older systems but there is always the trade of knowing a language in my opinion if you know one language well it's easy to get into code of another language if it's well documented it doesn't really matter whether you know the language. I really like that statement one language well I think that's important I think it's better to know one language well than 20 languages only a little bit of course when you know one language well and then you know 20 languages a little bit that's fine it may actually enrich one language it's the same for any tool also with the editors no one text editor but know it well big one With programming I would say you should probably know two languages at least reasonably well one typed one untyped so one more for scripting I'm a compiled and interpreted which is most of the same thing fast and easy which is also most of the same thing I see some questions here when should I start migrating to Julia and answer like see Julia replaces C rather than Python is that any comments about that it's not replacing C it's not a systems programming language it's not really replacing Julia is I guess more replacing Fortran than C even because it's not I mean it's not really replacing anything but it's intended to be to make it easy to write fast for computational tasks so it's not for systems programming you don't write the Linux kernel in Julia and it's also at the moment I mean it will probably get a good library ecosystem slowly over time but Python is ahead of it so it doesn't have the same library ecosystem as Python that was the ambition of Julia to be even better language for data analysis than Python already is but Python is way more general than just data analysis and computation so I mean I would say if you're starting a new project and you know if computational efficiency will be important then looking into Julia makes sense yeah no I disagree with that because so with Python the thing about Python when you use it is that you use Python as a glue language to glue together super well optimized things like NumPy is super well organized it's super fast it's way faster than C it's just as fast as Julia because Julia uses the same sort of underlying code but you just use Python to just glue together NumPy statements for example and when you need more performance if you get into packages like PyTorch Flow and DOSC and like this Apache you just use Python itself is super slow as a language but you use it to glue together this high performance thing so if you have something that really needs computational power you drop down and I think even Julia will do the same and many other languages actually do the same if you need to write it yourself or if you are combining enough NumPy statements Julia will be faster but yeah if you can do it in NumPy reasonably well then it's a toss up really either language will be more easily fast like with Julia nowadays there's already starting to be like a really good ecosystem of different libraries for numerical calculations like differential equation solvers and like automatic differentiation of like advanced stuff that you can do like GPU solvers and things like that but they're still like very low level so like if I would have a project and I need to do like machine learning or something like that I need to do like like another vector machine so something like that I don't necessarily want to start from the low level library codes like calculating some differential equations for solvers or gradient boosting or something I just want to use the the actual thing that calculates what I need to do and for that I would probably use something like Skikitlin of course there's similar kinds of libraries for Julia but I would have to like make them compete with each other like with the features that they have and like basically it's like if you like you need to look at what point of the ecosystem you want to basically jump in like if you want to do low level stuff Julia already has a very good foundation and there's upcoming really good machine learning packages and stuff like that but it's like different tools for different situations and if you know that you're going to be doing like low level stuff and you don't want to do C necessarily for example then I'd say Julia is like I'd say a better option and if you're considering C for can we move on to other questions can I have a short comment about because we work on this HPC systems regarding Julia and Python and other languages badly written Julia would run slower than a well written Python but Julia I think it's providing more support for like multiprocessing and for HPC systems so but you have to do it properly go ahead Richard at the same time one more thing Radoan and Richard and others there was some questions about what this code refiner is so please remind to sort of introduce it at the end so ideally in a few minutes we'll have an outro and someone can summarize these kind of things like what comes next and so on and also we can continue some of these discussions in the after party in zoom which will be pasted I guess it might be in the bottom of HackMD yeah it's in the bottom of HackMD and the twitch chat so once the stream ends joined there and we can keep talking what about I'd like this question what about copyright issue so when you share code someone might use it without referring to you any comments on that that's the same as I wrote that's the same as any copyright issue if you have a license file or even if you don't if they copy it they make themselves liable for lawsuits potentially if you actually do it open source with respective licenses and this becomes something bigger on their side you might actually get support by open source foundations and similar things to actually pursue your lawsuit which yeah is better than you sitting there not doing anything and if you're not making it open source what do you do with the code I mean I think maybe we can talk about the benefits versus the disadvantages so someone might do something but if it's not open in effect no one's going to use it or cite it at all so then like after being in the open source community for a while you start seeing the benefits and it's sort of a strategic thing so you can talk with someone and sort of find the right balance for your own projects if you are really afraid of somebody copying your code and sort of using it to get ahead of you before your publication you can always publish your code after you publish the results that's what I usually do with these things I first publish and then I open source everything we'll include a short license lesson next time yeah we talk about that in cobrefinery a little bit but it could sure deserve more conversation my problem was talking too much in-depth about the licenses is that I think you would need some kind of lawyer to actually give a more educated statement on them I think all of the people here can give the general statement from what we've seen these licenses are okay these licenses are a little bit more permissive than the other but it's a bit that's mine that is an interesting point actually because we were invited the software people to give a lecture at the law faculty about licensing at some point because it seems every time a lawyer speaks about license people don't understand anything so we have to be simple about we have to be simple about license it's not like the fine print and lot of text it is about the permissibility it is about the freedom so we have to have simple license and adopt existing license not to write your own and like getting benefit like how do you choose the right license to get the benefit you need once I heard this joke if you don't want to open something email your university and ask if you're allowed to and it'll be some so complex you will never get an answer and you won't open it if you want to open it then just do it so that might summarize the lawyer versus us debate pretty well at least that's my philosophy I think one general advice don't try to write your own license definitely not I say maybe there's like several main categories there's either viral which is if someone modifies it then it has to also be equally open or non-viral where if someone uses it they don't have to make the results open and these well there's far more someone here is going to say there's far more to it than that but that's sort of I think that's one of the main distinctions that is one important distinction okay and viral also means that others cannot others cannot change the license so essentially it allows you to profit from the code even if you publish it open source can I have a comment there go ahead I think it's good to remember that I think licensing is one thing licensing will not guarantee that I get more citations or not so for me licensing is one thing but making it easy to cite is a different thing I mean the one thing can help the other but the recommendation is make it easy to cite it and most people will actually cite it and most people will not do anything bad with it yeah copyright is completely different from citations if you don't distribute it then copyright has nothing to do with that it's like integrity that says you need to acknowledge people which you built off of and yeah okay there's this interesting question about processors do we have time to say something about it I the Apple M1 processors yeah so this comes with different architecture so we have different like very main architectures we have so those things when we talk about this Konda and Pip if you remember that there was this during the dependency lesson NumPy 1.13 failed when I installed because it's trying to install some source so in ARM you will feel see this a lot because the pre-compiled packages are like there are the NumPy would be there but there are much less packages for ARM but it's building up so there's this initiative called European Processing Initiative where the Europe going to produce its own processor and ARM is going to be the architecture so I would think in the future we have to when you distribute code let's say if you want to distribute it in Konda or like in Pipy I would recommend you also provide this ARM version if you can I would like to have one but my bank account doesn't like I would like to have one yeah so there are very cheap like cheap ARM because you don't have to buy a Mac I don't know, compile it to Raspberry Pi should we have a quick alt runnel in some of the summary points