 and we're live on YouTube. All right, welcome everyone to the Q&A with CODA sessions, speaking about common problems CODAs encounter and how we overcome them. I'm Matt Lloyd-Jones, I'll be the chair in this session and I'll let the CODAs introduce themselves. So Matt, great job first. Yeah, hi, I'm Matt Granger, a researcher at the NENA, the Norwegian Institute for Nature Research in Trondheim. Thank you. I guess I'll go next. I'm Caitlin here, I'm a postdoc at the University of Edinburgh with the Camera Addies Group. And I'll go last, so my name's Chris Pritchard, I'm a senior lecturer at Nottingham Trent University. Right, yeah, so just to remind you of the sessions on common problems that don't encounter and how they overcome them. Yeah, to start you off, I've got a question. What is the most common problem you encounter when writing code? Maybe... I guess I've got one, is silly things like missing commas, semicolons or brackets. Is probably my favourite one. And I think with R and particularly with Shiny, you can very easily miss a comma. And then it gives you a very cryptic-looking error message. And you have to kind of crawl your way through, trying to work out where this missing comma is. And for other languages, it can be similar. So Python's very sensitive to spaces, for example. So yeah, it's kind of syntax-y things, I think, am I my big bugbear? Yeah, maybe Caitlin next. I think, honestly, I have to say that it's like the exact same problem, where it's the silliest syntax things. Also in R, I guess, when to quote and when not to quote sometimes, isn't that clear in different functions? And yeah, just getting things round the wrong way. Also the equal sign. For some reason, I always just put one equal sign, even though for most things, when you're evaluating, it's two equal signs. So that's something I constantly get wrong. It's very annoying. And Matt? Yeah, I think probably the same answer, really, is those sort of syntax sort of problems. It's often scarier when your code runs, but doesn't do what you thought it would do. And you can't actually work out why it's doing what it's doing, let alone why it's not doing what you thought it should do. So it's those sort of problems that are fairly common. And yeah, trying to remember different functions and which way they round the go. And I always get some of the tidyverse functions the wrong way around constantly, like rename. It's just not logical to me. I get it wrong all the time. Yeah. So it's just those sort of syntax issues that are the biggest problems. I think one of the ways I tend to get round it and I don't know about you guys, but so I use Visual Studio Code. I know a lot of people use RStudio or similar for R, but I find having syntax highlighting on can be really helpful. And I think trying to stick to a sort of style guide. So using like the tidyverse style guide or and using a package like linter or styler to make sure your code meets those style guides can make it really easy to spot when you're missing something because you go, hang on a second, the brackets don't line up and you'll be able to kind of work out where you're missing thing is from there. So I think that's one of the ways to kind of overcome it is to be neat and tidy with your code and use these style guides. And it can be quite tedious and particularly when you wanna build something in a hurry and the fun bits always the problem solving and the building it, not the writing out brackets and commas and stuff, but it pays dividends in the future when you try and run your code and you're like, yes, the issue is that bracket there because it's not there rather than, oh no, which of these 10 functions has a missing thing? Yeah, that leads nicely on to the next question about where do you go for helpful solutions? So maybe Matt? Yeah, Mr. Google is our friend. And I mean, there's no problem you run into that no one else has ever come across before. Well, very rarely I think there's a problem that you come across that's something entirely new. So there is help out there. Obviously Stack Overflow is one place people go to. Sometimes I don't find the solutions I want there, but just Googling it usually finds, if not a solution, then something that explains what's going on a little bit. That's my go-to. Yeah, I mean, I come in there, I think one of the things when you're a beginner that can be difficult is knowing what to Google. And yeah, Samrat Pawar, who is an Imperial College, he used to teach his students to like learn to Google these problems that you don't know how to phrase them, even have the vocabulary to phrase the problem. Yeah, I think for me, that's been like, one of the biggest things that I've learned because I always feel like I don't really know R. I just know how to Google, like how to find the information. So yeah, I think that's the Googling and knowing, yeah, knowing how to phrase it. Like, what are you actually trying to do? Yeah, like just to give like one example earlier today, like my student is trying to code like forest plot for her meta analysis. And we were getting really stuck at how to like make it a bit more compressed as we kept calling it, like compress the forest plot. But obviously, if you Google that, you get all this stuff about compressing the image and that was not what we were looking for at all. And I was like, oh, maybe it's like the lines that we eventually worked out. We had to Google it in a different way to make sure that we were referring to how do we limit the spaces between the points. You know, so it's that sort of thing that can get confusing if you don't want to Google. You really have to have like an understanding of what's going on under the bonnet kind of thing to be able to think about what might be causing that problem. I think as well, one of the things that I've found is the error messages that you get can sometimes be really cryptic, but they're often quite helpful. So especially if you're using sort of an IDE or similar, it will often tell you which line the error is. And what I'd say with that is a lot of the time, actually the error is just before that, where you're missing something or it's running off. So that I think is a really handy one is read the error message. Don't be scared because it's a bunch of technical stuff that you don't understand. Often it's something really silly, like it will say unexpected word in line, whatever. Actually, if you look, your problem is probably just before that, where you've not done something properly, which is why the unexpected thing is happening because the compiler expects to find a bracket or a comma or a space or whatever between what you're doing and the next thing. And I think, you know, we're... Can I come in? Oh, yeah. I haven't put a camera to the question. So you're someone who's had, you were a professional coder before, right? So I've got a master's degree in computer science and I've done a bit of coding. The unique advantage in interpreting those error messages? Possibly. I would say that I did a lot of coding and then did my master's degree rather than I did a master's degree to learn how to code. So for me, I think a lot of it is just... It's come at us, don't be scared of things and just if you read it and Google it, it'll often tell you kind of what it means or at least a lot of what the common problem is. I still think a lot of what I know about coding is, you know, you kind of... It's been very much a picking up as you go along kind of thing. And as Caitlin said, you know, sometimes you don't feel like you really know a language. You just know how to Google about the answer. And you know, I think, you know, I know that I feel like that sometimes and I know that I've got friends and colleagues who work sort of full-time as developers and they kind of spend a lot of their time using Google or other search tools to kind of find an answer. So stack overflow is great and it's full of professional coders who have come across an error and are trying to fix it. And you know, I think the other thing is there's lots of really helpful resources out there for all the different languages you've got. So, you know, if you're using an R package, look at the manual, it generally speaking, people tend to be quite good at documenting what their functions do and how the argument should be presented for sort of web development. So JavaScript, CSS and HTML, attendees, the Mozilla developer network to find out what different tags and things do or how to do some stuff. So there's all these different kind of tools and resources out there to get to grips with some of the things. And I think the big thing is, if you want to do something, you probably will be able to do it. You just kind of need to know how to Google and in what language. And there's lots of commonalities between languages. You know, I hadn't picked up R at all until I started looking at the Prisma 2020 flow diagram app. And that was the first encounter I had with R. So, you know, it can be, I guess I come at it from a point of view of probably being familiar with quite a lot of different languages, more so than a lot of people perhaps watching the conference but I come across similar problems across all of them. And there's similar resources out there to help. There's a really good book online, a book called Something Like R for Graduate Students. And they have a chapter on troubleshooting common problems. That's really good. It has like just a list of all the common problems you might find. And yeah, it's things like having a capital letter instead of a small letter, making sure your objects in the right place and all that sort of stuff. So that's quite useful resource, I think. Another place I go for help is often Twitter and Macedalon now, I suppose as well. But yeah, there's always someone hanging around on Twitter who knows how to do something. So even if you don't know what the code is, you can describe what it is you want to do. And someone might be able to get you a little bit closer or all the way to the solution. So that's quite useful. Yeah, you've done that for me on Twitter a lot of times. Yeah, just following that, I guess. Yeah, so I guess we talked about Stack Overflow a bit. And I've actually got a question that was coming from Claudia Kepp on this. So she says, sometimes I feel like I am missing out on easy solutions for specific problems in data analysis for evidence synthesis. For example, problems with specific formats, such as dot-ris. I feel like Stack Overflow is not actually the right place to ask a question for such a specific topic. Where do you find support and information for such specific issues? Who do you ask when you start? Maybe Caitlin? I mean, I don't want to just say Google again, but that is what I tend to do. But I think, obviously there's a whole community of people as part of this conference who would have some expertise. So maybe, I don't know if going forward, maybe we should try and use ourselves as a resource a little bit more to help each other out in the evidence synthesis space because we all know something about evidence synthesis and are trying to solve some of our issues with R. So yeah, I haven't really done that so far, but we should do that, I would say. Yeah, I think for some of the really specific issues, it can be really helpful to ask the community. The other thing is kind of, we keep saying Google, but if you search things like GitHub and stuff, you might have other projects working on similar things where people have come across specific issues. I know when I've been bashing my head against the brick wall trying to solve a problem and I've searched for kind of what the issue is and a lot of the time it will be a thing that's present in other projects and they'll talk about it. And sometimes it can be as simple as, oh, you're trying to use something that's actually in the newer version of your dependency and have you updated your dependency and other things can be just picked up from the issues section of various projects if they've come across bugs. But I think that yeah, stack overflow can be great, but I think you're right that for really, really niche questions about really specific things, it maybe isn't the right space for those questions and that's where Twitter, Master Don and the Slack and this conference can be really helpful with the networking because you've kind of got those people that you can kind of phone a friend about. Yeah, I think I'm just going to guess what this question is. Maybe it's talking specifically around like Braille re-initiative information, specialist type issue, so like there's bibliography. And I guess maybe there isn't the equivalent, I don't know maybe there is space for those conversations. I can tell you that there's a medical librarian's discord that seems quite active. So there's loads of spaces that exist. Can we share a link to that? I'm sure I will find it, it was somewhere on Twitter once, so I'll try and find the links to that. I'll dig around as well. Matt, do you know of any other such spaces? No, but yeah, I can echo really what Caitlin said, we are a community that Esmeralda has a large community now, it's increasing every year. If you were to send an email to one of us, I'm sure we could actually, if we don't know the answer, we could work out one who might know the answer and two we can probably work out the code. Yeah, just ask if you have a problem with any of these sort of things, we've probably all come across the same problem too, and solved it eight million different ways as well. So there's not just one solution, I think some people don't really sort of realise or understand that there isn't one solution to any of the problems. There's often like multiple solutions and they're equally as valid. So we can find solutions for you, it will work for you. I'll move on, I've had another question, I'm in. And yeah, it's just going back to sort of Matt had introduced a one book, a report on what book would you suggest for anyone to learn, who knows both of them. Can I be controversial? And say, you know, if you already know a programming language, a lot of the fundamentals are very similar and it's the weird syntax stuff that can kind of get sort of trip you up in things. So I found the best way to pick up R was actually just get stuck in to a project I found interesting and try and solve the problems and a bit of learn by doing. The great thing about this slightly different to sort of, I guess my day job as a paramedic is, you know, if things go wrong on your local copy of the code, it doesn't really matter. You can kind of go back and test it and try again. So one of the things, one of the ways that I've found really helpful, particularly as someone who kind of already has a familiarity with a variety of languages has been just kind of getting stuck in, finding a project I found interesting, cloning it, making some changes, adding a feature that I thought would be helpful. And that was how I got to grips with the R syntax and stuff because the basics are very similar. R has, you know, lets you install packages in the same way that you can in Python with PIP and you just need to kind of get to grips with some of the different syntaxes but the actual way that you'll solve problems still falls back to, you know, see if someone's written, someone's got a package that does it, if not, you know, fall back to your basic logic statements and try and get it done. So yes, there are some really helpful R books out there. I wouldn't personally know of any because I've not used any, but sometimes just getting stuck in can be a good way of learning. Okay, that's a good point. The vignette in the reticulate R package that actually looks at the difference between Python and R from an R users point of view, but I think it's probably equally as good from the Python users point of view. So it just tells you what those main differences are, the difference in indexing from zero or one, the difference in different syntax. So it's quite a useful little, yeah, short page vignette to understand the differences. Yeah, would you mind, do you have a link to that? You can pop in the chat, cheers. I'll distract everyone else while you're looking for that. I think I've got it, I'll send it to you, Matt. Great, thanks. Okay, so, right, do you have any practices or tips to make coding more efficient or streamlined to make it easier to sort of solving the problem with avoiding them in the first place? Work with other people. That's the biggest tip is that, I think working in teams really helps because everyone has a little bit of a different skill set. Yeah, and you learn a lot from working with other people. So you learn how to overcome some of these barriers and hopefully they might learn something from you. Not usually in my case, but that's not very good Coder. But I think there's something to be said to be working in collaborating in teams. Yeah, I think I agree with what Matt's saying but also for me, I also just find it really useful like looking through other people's code because like line by line trying to understand the way that they've solved a problem massively helps me because I feel like when I started learning R I sort of dived into it and I learned the tidy verse and then I didn't understand any of the base R stuff. So looking at the way that different people solve a problem either working with them or even just going through their code on GitHub and trying to like understand their thought processes. Like for some reason that's actually where I learned the most new code from and new solutions. So yeah, that would be my answer. Yeah, I think working with other people in collaboration is really good. I think another thing for me is, you know, set up your coding environment. And by that, I mean like, you know, so are you, as I said, I use Visual Studio Code but others use R Studio. Don't just go with the defaults. Like play around with the settings and stuff until you find something that works for you. So like for me, I'm a bit weird. I like coding on a black background with sort of other texts. Other people might like coding on white background on black text. Little things like that can make all the difference to making it more efficient for you. You know, I try and set up syntax highlighting for the languages that I use to make it. So I'm not just staring at a screen. It makes it much more clear where I'm maybe missing a comma or things like that. And also, if you set these things up right, you can often just hover over the things you're typing and it'll tell you what that function does. And little things like that, you know, if you've got that all in place, it can be really helpful. So as I said, I find Visual Studio Code really good for that because it's relatively lightweight and works across loads of different languages. So I could pick up a JavaScript project and work on that or an R project and work on that and it'd be a very similar environment. But I think that, yeah, the big thing is don't just settle with the defaults that the software designers have kind of thrown at you. You know, spend some time setting things up to look like how you like to work in a way that you like because that can make things much more streamlined and more medium forwards. Yeah, I guess related to that hardware. Sometimes it's nice to have another screen. If you have a luxury, I guess, yeah. One screen for your help, like you're Googling or one screen for your code, it does really speed things up. But yeah, it can be difficult, especially if you can move around or work in different places in a cafe or whatnot. Yeah. Okay, I'm gonna give priority to the questions coming in. So we have one in from Shreya Dimary. And that is going back to your own code. Months later, no amount of comments can help if the script is a complex project. Fair point, I think. What are your suggestions? I'm commenting in a way where the code will become okay, like 2,000 lines of code, basically. Yeah, there's a related question that I'll ask her. I think, sorry, I guess I feel like I'm maybe talking quite a lot, but for me, I like my code to be quite readable. So for that, I mean, I'll stick to, as I said earlier, a style guide. And that helps not just for finding syntax errors, but also for following your code in a logical manner, because the way I look at it is, I shouldn't need to comment about my implementation of a function that should kind of stand alone and be obvious about what it does. I might, if there's a strange glitch, for example, when you're doing something quite low level, you might need to comment and say, why are you doing something strange? I don't know. But for the most part, I find that I don't tend to put comments within a function. I tend to have, describe what the function does. And then hopefully, it's small enough that the rest should kind of stand and be be kind of obvious in and of itself. I think my tip with functions and splitting stuff out into functions is one, don't be afraid of having some functions that you mark as sort of private or internal functions that are used by your package and that are subject to change and that aren't documented in the same way as your public functions, which should very rarely change in terms of their interface, not necessarily in terms of their implementation. And anything that you're gonna do in multiple places in your code should probably be split out into its own function. So if you find yourself writing the same set of five lines of code several times throughout your project, that should probably be a function. And that's kind of how I tend to work with it. So again, I'll take the example of the Prisma 2020 app. We had something that was quite, that had quite, that was basically repeated several times in the code. I split that out into an internal function that could then be reused. And then it means that when you're adding and changing things, you've only got to change it in one place. Yeah, that's something that I've learned quite recently is that using functions in a better way, but also having naming things so they make sense of what the thing is doing rather than just having maths function. It's what the function does. And having sensible names, it's sometimes hard, but having sensible names are your variable names. So I know that the variable is, for me, it's all about wildlife stuff, but maybe, yeah, harvest size or bag or whatever. But having something that is, so that I know what the hell I'm talking about. And it's not easy. And it's not something that comes naturally because you just like, you often have a data frame called BF or that. And that's not helpful to anyone, including yourself. But it takes a little while to learn that, I think. And it takes a little time. And I sort of echo what Chris is saying about the style using the styler is a revelation to me. So I've just started doing that recently and it's really helped me read code better. It's a good tip. Can we just clarify in the styler? But anyone who like me, who might never have heard of it. It's basically, it's an R package that you can run every time you make code changes. So sometimes even, I don't know if RStudio has integration with it, but you can even have your IDE like run it live on your code. And it basically pops out things that aren't like errors in the same way that compiler error is, but a lot of warnings that says, hang on, this line's too long or you should always try and use consistent variable names. So for example, one of the things you might have it configured to do, and I think might be the default, is it prefers like alternating capital words rather than underscores or vice versa. So that all your variables are consistently named rather than like some might be snake case and some might be underscores. Yeah, I guess we are one of the tricky things with comments is knowing how far to go. Like there's one thing describing what it does, but then should you also describe how should you, who do I assume the audience is, what level of assumed knowledge? I think that's what would be tricky. Maybe Kate and us. I was just gonna say it depends, I mean it sort of depends like what project you're working on, because I think if you're trying to build a package, it's sort of a different question because that's, then you have to make sure that yeah, someone else could like actually understand what you've done and pick it up or if you're working collaboratively with people. What I've found, if I'm working on something like to do with my research more, like if I'm doing, I don't know, like a meta analysis or some analysis thing that I have to use a lot of code for and I need to go back and actually understand what I did. I've actually found it really useful to use like our markdown or something like that and make it like almost kind of narrative, like this is how I'm doing my analysis. All the bullet, you can add things like bullet points and like go into a lot of detail about what you're actually doing conceptually and what all the variables mean so I found that really useful if it's for like a specific analysis and I think it looks much nicer as well than like having a million comments so that when you go back you're kind of more willing to read it all and understand it as well. So yeah, if it's for that sort of thing that can be useful. One of the times I'm just looking back at some of the utility functions I wrote for the Prisma app and one of the times that I found I've specifically commented in a bit more detail about what the code's doing has been where I've had to sort of embed for example, JavaScript within the R code so there's less assumed knowledge of people understanding the function so I've described in quite a bit of detail about what the JavaScript actually does so I said like it loops through each node locates this, does this and that in a way that kind of reads a bit more than perhaps I would have done if it was just a simple loop in written in R so that can be another thing is if you're so R you can, particularly with things like Shiny and stuff you might embed HTML or JavaScript within your code, in Python I know you can embed and I think you might even be able to in R embed stuff like C and other native code within your projects and that might be a place where you do go into a bit more detail with the commenting because the level of assumed knowledge is a bit less. Okay, cool, yeah. All right, so what do you know now that you wish you knew when you started out as a coder? Let's take a few minutes. What do I know? I think like for me, the biggest thing when I first started coding I just like didn't understand all of the things that I could do with it. So I always feel like when you first like write the beginning I started learning coding when I was like final year of university my undergrad degree they literally just gave you like sentence like not sentences but functions to write out in R. Basically that's what they gave you on a bit of paper and I was just typing it in and I didn't really understand what I was doing and I just thought R was like something that you do calculations in only. So I think I just had no idea about the capabilities and all the amazing things that you could do with it and that you can like anything you can think of that you might want to do or create even as an app like there's so many options and I think I just didn't know all of that. So I always try and like whenever I'm working with people who don't know R I'm always trying to get them excited and realize like it's not just like calculating a meme or whatever you're doing in this line of code it can do so much more than that. So yeah. Yeah I think that and the fact that communities are really helpful so people don't bite so it can be, you know don't feel like you're asking a silly question because you're probably not you might feel like, oh my God they probably know this it's really obvious but actually it's not that I think we've all been there where we've come up with a solution and gone that was really obvious. I should have realized that and actually, you know sometimes it just takes a little a little sort of nudging the right direction from someone so don't be afraid to ask when I and this is kind of showing my level of nerdiness but one of the IRC channels I use occasionally so IRC is like a very old text based version of Slack for want of a better term but one of the IRC channels I use just has the tagline of don't ask to ask just ask and I think that that's kind of stuck with me it can be really helpful and with that I guess just don't be afraid to delve into some of the dark corners of the internet where things like IRC and things like that exist so IRC for example a lot of Linux and open source software has IRC channels and it can sometimes be a bit sort of daunting accessing those kind of things but for some of the more niche technical questions there are lots of people with lots of quite detailed knowledge sort of on those and they're more than happy to help if you do so if you see a project and it says they've got an IRC channel or whatever that can be a useful source of knowledge of actually people helping you solve your problem pretty quickly as well you know I've had people help me talk me through a problem you know I like less than an hour after asking the question and that's that's quite a nice thing about the programming community I'm going to count that I'm going to let Matt come in and then I'll go next Russell's being rough again I wouldn't recommend going in some of those dark places in the internet but yeah I agree with both Caitlin and Chris about the whole sort of learning process and being open to understanding that R is not just a calculator I think that's quite a yeah that's mind-blowing once you realise that but it takes a little while to do that for me I think one of the things the biggest thing is don't be afraid you can't really break it you know you have to work very hard to break stuff in R you have to you can make a mess of stuff but that's that it's quite easy to sort of undo those messes but also one of the things I learnt most that was you don't have to be a really really really really good coder to start with to work on some of the open source projects and things so for example the years hackathons that we had in the past we had in the past working on some of the packages there that we've built when we started to eat Evie Atlas in Stockholm in 2019 I think I wasn't a coder at all really I knew how to turn the computer on and get find R and that was about it I didn't know about GitHub or anything like that working there's a place for everyone of every different level of coding ability on these projects so even if you are I just I say just is the wrong word but it's just if you're helping with documentation saying what the the code you want the function does you know it's very easy to contribute in some way and all those things need to be done so it's useful and then you learn loads from other people yeah I thought I mean personally I think sometimes when you're learning some of these places can be like you said Trist and Timothy and the conventions that exist within them not intentionally can seem standoffish and dismissive like you know oh this issue has already been posted on and then it just gets shut down so I mean yeah I mean I I guess that's why I found these communes are a lot easier to solve problems with and related to that there's also an element of the fear of beginners and non beginners sometimes feel about looking stupid and putting stuff out there on the internet so I think there's also a space for like local communities are really important anyway anyone want to come in? Chris? No I agree I think that you know it's good to have the variety of communities and particularly for beginners with quite specialist needs as we are in this evidence that this is community you know it's good having our own space but also it's good to not be afraid to venture out of that little space if there's something that perhaps the expertise within this community that doesn't exist to answer that one question you know someone in a different field but trying to do something similar might well have encountered that problem and also if you can't find a solution to how to solve it in R someone might have solved it in another programming language and actually once you understand the logic behind what they're doing implementing that in whatever language can be easier than not having any knowledge at all of where to even start We've had a question come in which is actually the next question on my list anyway pretty much what tips or lessons do you have for someone like me who is learning to kind of learn how to encode in R and so and the related question is like tips for aspiring new coders generally I guess but given this is an R conference there's a few bit R people Peter? I think I would say when I was first learning I did a lot of stuff on data camp which is not always free but some of the courses are free and I also used Coursera so like both of them in both of those situations I think in Coursera I had to like submit an assignment at the end of a course and that was really useful and in data camp it's probably even better because you you're actually like coding while you learn so I think that just so useful like I'm not very good at reading so I really hate it like I can just read lots of documentation and I know there's so many R books out there and they are really useful for me when you have a specific thing you read that chapter maybe but for me I learn a lot better by doing and those data camp courses are great for that because you're just constantly coding and learning so that's what I would say that's how I learned basically or how I started off and then I just Googled from there I think a lot of those online courses can be can be great one that I've I've sort of seen there's a CS 51 from Harvard the introduction to computer science and it starts at quite a low using quite low level concepts so it goes through C and then Python so it uses C for a lot of the low level concepts and then then builds on that but it gives you quite a good foundation and again you kind of code as you go and build a project at the end of it so and that's free unless you want as difficult then it costs money so again that might be be somewhere to start and I would say find one that works for you there's plenty of different people delivering plenty of different courses in different styles and you know if you find that you don't get on with one or it's not covering what you think it will cover then try another one I think I got I think I first started programming when I was about 13 using the C sharp for dummies book back when those were a thing and the internet was still on dial-up yeah I think it's important normally you just said sort of be able to recognise when just something doesn't work for you and often like me I'm sifting through rapidly different things and then something just clicks am I just being awful I just stick with that one and it's just being able to say to yourself it's not because I am just not understanding it it's just you know something about the way it's being taught just clicked with you maybe it's more visual or something try a few different things simultaneously and then take the one that works for you I think another good tip is to have sort of little pet projects that don't really matter so there's yeah you can try and challenge yourself to make yourself a website in art or and you can there's lots of help out there so you can follow the help and you can follow exactly then you can make tiny little changes and there's little changes and see what happens I think the Tidy Tuesday project is quite a cool thing because you get these data sets every week that you can play around with and you can visualisations Caitlin your shiny app things with the dogs that was pretty cool as well so it's that those sort of tiny projects that aren't for anyone but yourself I think are quite cool ways to just sort of practise and learn then you'll find an error and then you'll do it and you'll find how to fix it and then you learn a bit more and look at it every time so yeah just be yeah be nerdy and have some art projects that are just for you yeah I mean sort of relate to I think why I found when I especially when trying to make my code and data more reproducible and stuff like you learning that on a project which has a relatively simple analysis or something like that when I first started learning I was diving into a huge complicated project with loads of explanatory variables loads of that and it was really there was I was being thrown off so if it's a much simpler project that might be a better starting opportunity but also teach yourself as you how do you you know push out a study paper um yeah alright and then I'm gonna go with the chat GPT question haha just finish I think unless there's any other questions please just throw them in we've got a bit of time um so what do you think about using chat GPT to help write code and maybe chat GPT in the context of holding in problem solving more generally fingers on the buzzers I think it's a really really useful tool if you know what to ask it so it's the same thing with Googling it's just posh Googling I suppose um is that you know it's helpful in a to a certain extent um so I've played around with it recently to to help me troubleshoot a problem I have with a shiny app um and it's really useful but a lot of the time it just gave you nonsense so you have to ask the right questions and then what was actually very useful is when you got an error message from the code that you had written to say to it oh hang on a second this this is great but this didn't work and then it comes about to says oh I'm sorry but try this and you can learn quite a lot from it so you can learn yeah how to deal with some of the issues and it's quite good of that type of thing but as I say you need to know exactly what you're asking and you can't just sort of copy and paste the code and and hope it works for you I think um you know and there's other similar tools to tap GPT um you know GitHub release GitHub co-pilot for example that is specifically for coding um I think it's complicated um I think one of the certainly one of the ethical issues is for example um if you happen to have released your code under for example a GPL license which requires all derivations to be made um open source does code derived from an AI based machine learning model have to follow that license well that's a a complicated question right um I think that it can be really handy uh AI can you know particularly boring repetitive tasks or like um writing out a boiler like a boilerplate function that does something that's been done millions of times elsewhere but has to be slightly specific for your code you know AI based programming can be really helpful it can help answer questions but I think the big thing is you can't use it as a substitute for truly knowing the language and what the code does because you know if you you can't turn around if your code for example uh to take a worst case scenario um causes let's say um a massive memory leak because it starts looping and calculating using massive massive numbers and causing your computer crash you can't just say well it was the AI's fault you know it's on you to to kind of check your own code and make sure your code works so it's not a substitute for knowing and understanding the language and good proper testing um but it can be a really valuable thing so the way I can sometimes use sort of co-pilot or chat GPT is you know I'll check that it kind of looks right before I'll like agree insert code insert it into my code so I will read through it I will make sure it does what I want it to do before I start playing around with the with with the actual outputs from that yeah I would I would agree with what um both Matt and Chris have said it's it is useful in certain contexts and if you know exactly what question you're asking it and you you roughly know what you want to do and how it all works and everything like that and you just want to try and solve a specific problem or understand why you're getting a specific error or how to do a specific thing in a plot for example I found it can be useful things like that what I've also used it for is some of the more boring aspects of writing code like for me and writing unit tests actually it can be good at that and or I've recently tried to be trying to convert some of my shiny apps into shiny modules and actually it's been coping really well with that converting some of my shiny app code into modules another thing I use it for is um when I'm building a shiny app or something like that and I want to add in CSS or HTML code because I know nothing about HTML JavaScript CSS um but if I want to do something simple like change the color of this specific thing or um add an image in this of this size I can get it to write the HTML code that would work within our shiny for that so those are a few of the things that I've I've used it for and yeah I absolutely wouldn't trust it because it lies about so many things but it can be useful have you used it for translating between languages can I feed it I've never I've never touched chat TV but I feed it a function in art and it would output me new code yeah uh yeah I think it would I think if you said um because I have used it also for I think I'd found an answer to something in Python like I think I was using a plotting library that they use in Python and I was like can I convert this to our code to solve this problem and it it did manage to do it correctly so I think you have to be familiar with the language that you're language that you're translating into and the problem that you're trying to solve for that to be in any way useful um just in case it gets it wrong yeah so I would so to say you knew you knew Python but you didn't know Ruby then translating from Ruby to Python would probably be okay but I wouldn't go with a Python that's translated to Ruby because I wouldn't be able to verify it as easily I used it for translating what I thought was a useful R function into JavaScript for Google Earth Engine and it worked really well I didn't have any sort of idea what would work in in Google Earth Engine but it clotted the thing I wanted to plot so that that that worked and one other thing I've used it for sorry is um like if you want to speed up your code as well like if you're doing something in a really long way if I've got loads of code to do one thing I have asked it before can you make this more efficient and it has suggested things that I hadn't thought about I've used it for a very niche problem whether I have is translating my comments and my code into Norwegian comments and code which is um yeah none of you will probably have to do but that's actually been really really good yeah that can be really helpful yeah I mean I guess some languages yeah we have people from all over the world in this conference and it might be useful to translate some of those resources you suggested yeah I think um deep L is also an interesting one for translating that helps anyone anyone else? is that the google one? I don't think deep L is probably is most things in this world are but yeah um oh no no it's not it's random German yeah that's quite I mean I've found that really useful more generally when collaborating with people in Latin America or around them this might be an email because you're often trying to communicate really technical things and yeah um anyway all this chat about chapter two ebt might come irrelevant because they've seen it out as in this six month pause that musk is behind now it's like they're trying to think they're throwing a bit of tantrum buddy but yeah we'll leave that for another day um okay so I think that's that covers all the questions I think um I should try to wrap this up so now I think the thing is that that for me from the chat is sort of the importance of communities and having multiple at different scales so you know esmar comf which would plug that so that and the evidence that this has on communities follow those on twitter and and master don and there's lots of lovely people there who will help you out with your problem and then I think yeah within your own institution having these having perhaps more um little bit more private networks where you can ask different kinds of questions when you're you're really learning I guess and yeah I think I think all of them are kind of important and um the main thing when learning on solving is to have active to a community or a few all right so uh thanks everyone we're switching a little bit early but it's lunchtime so that was really interesting by the time here really I suppose I did just want I guess I just wanted to say say one thing is um you know even if you don't feel like you know code get stuck in if there's a project you want to to help on or you've got an idea or whatever just just get stuck in and you know even if it's as simple as testing it and writing a good quality bug report you know saying exactly what you were doing when when a problem happened or you think that this package does everything great apart from this one little thing that's really niche in your area if you can describe that in a way that's very easy to translate into code so describe the project logically rather than vaguely that can be really helpful and and can be a good way to start you know a lot of people kind of get started by helping out writing tests or even writing documentation or you know use cases and similar can be just really helpful and I'm thinking back to you know the site source package and how over the past year I think a lot of and I bit of a shame I wasn't able to be as involved as I'd wanted to with that but seeing you know people sort of progress from perhaps being really not very confident in their own knowledge of of the code and then sort of get into the point where you know committing bug fixes and making changes to code it's it's really nice to see and one of the benefits of being involved in a community yeah I think having a practical project to be involved with in sort of developing a relationship of actually being can be helpful and learning together any closing thoughts or should we leave it there okay I'm gonna leave it there I think all right well thanks everyone for your time that was a interesting discussion yeah be around