robmoss / git-is-my-lab-book

Support EMCRs to develop their computing skills
Creative Commons Attribution Share Alike 4.0 International
8 stars 8 forks source link

Preparing for our 13 June meeting #72

Open robmoss opened 1 month ago

robmoss commented 1 month ago

Now that the previous meeting notes are online, I'd like to send out an email to cover the following:

  1. Inform everyone that the meeting notes are online, and that TK gave a great presentation in our May meeting. Anyone who missed TK's presentation can read the meeting notes to get an idea of what they covered.

  2. Remind everyone that we welcome presentations about research projects and experiences that relate in any way to reproducibility and good computational research practices. Presentations can be short, informal, and free-form.

    • Please contact us if you have anything you might like to present!
    • TODO: confirm a speaker for our 13 June meeting, and advertise them in this email.
  3. As TK's presentation highlighted, changing our behaviour and work habits is hard. So too is finding time to develop these skills. We need to practice these skills on small problems first, rather than on large projects; and definitely not when there are tight deadlines!

    • Question: Should we organise an event to practice and develop specific skills on small-scale problems?
    • Question: If so, what skills and/or problems would be of most interest?
    1. Question: Regarding the use of generative AI and ChatGPT, does anyone have any examples of code produced by ChatGPT that didn't function as intended? It would be great to have examples that may appear reasonable at first glance, but don't function as expected. This is a situation where practices such as code review and testing are particularly important!
  4. Question: Is anyone interested in taking up Rob's offer of walking through the original code for a within-host malaria RBC model, and how he gradually restructured, tested, and documented it?

@jomonman537 @EamonConway are there any other points we should include in the email?

robmoss commented 1 month ago

Question: Should we organise an event to practice and develop specific skills on small-scale problems? Question: If so, what skills and/or problems would be of most interest?

@EamonConway and I discussed a few ideas earlier this afternoon. This is a really hard Goldilocks problem, we need a project or problem that isn't too simple or too complex.

Perhaps the most promising idea was to provide everyone with a small-scale project that is poorly structured, poorly written, poorly commented (and maybe even wrong in some places?) and ask people to tidy it up and extend it (slightly) to achieve some specific outcome (e.g., apply the analysis/model code to a new data set that is structured a little differently).

It would need some care to avoid frustrating participants. But it would also give people scope to explore a variety of skills according to their interests, including options such as:

This would be something to discuss in our next meeting, to gauge people's appetites for specific skills, tools, etc, that they would want to practice.

EamonConway commented 1 month ago
  1. Question: Regarding the use of generative AI and ChatGPT, does anyone have any examples of code produced by ChatGPT that didn't function as intended? It would be great to have examples that may appear reasonable at first glance, but don't function as expected. This is a situation where practices such as code review and testing are particularly important!

I have an example of overly verbose code from Chat GPT, however it makes heavy use of C++ templates so I do not think this is suitable for the group. It basically was 50 lines long, and I reduced it to about 5 (the only 5 that did anything relevant) But I'd be happy to try and find it in my git commits!

EamonConway commented 1 month ago

Question: Should we organise an event to practice and develop specific skills on small-scale problems? Question: If so, what skills and/or problems would be of most interest?

@EamonConway and I discussed a few ideas earlier this afternoon. This is a really hard Goldilocks problem, we need a project or problem that isn't too simple or too complex.

Perhaps the most promising idea was to provide everyone with a small-scale project that is poorly structured, poorly written, poorly commented (and maybe even wrong in some places?) and ask people to tidy it up and extend it (slightly) to achieve some specific outcome (e.g., apply the analysis/model code to a new data set that is structured a little differently).

It would need some care to avoid frustrating participants. But it would also give people scope to explore a variety of skills according to their interests, including options such as:

  • Practising how to structure and write code that is easier for others to understand;
  • Learning how to write tests to ensure that they don't change the code's behaviour as they restructure it;
  • Using continuous integration to run tests and/or generate results; and
  • Learning how to use a debugger to help figure out why the code is incorrect.

This would be something to discuss in our next meeting, to gauge people's appetites for specific skills, tools, etc, that they would want to practice.

I like the idea of this a lot! @robmoss When it comes to writing tests, should we recommend a framework? CI is a great opportunity here, we could even take what is written and leave it up as a template for other in the CoP to read during onboarding. In regards to writing code that is easier to understand, we could consider resources like this https://www.youtube.com/watch?v=Bf7vDBBOBUA&t=49s (just a personal favourite)

robmoss commented 1 month ago
  1. Question: Regarding the use of generative AI and ChatGPT, does anyone have any examples of code produced by ChatGPT that didn't function as intended? It would be great to have examples that may appear reasonable at first glance, but don't function as expected. This is a situation where practices such as code review and testing are particularly important!

I have an example of overly verbose code from Chat GPT, however it makes heavy use of C++ templates so I do not think this is suitable for the group. It basically was 50 lines long, and I reduced it to about 5 (the only 5 that did anything relevant) But I'd be happy to try and find it in my git commits!

Even if people aren't familiar with C++, it could be useful to show an example of "Here's what Chat GPT gave me" and "here's an equivalent piece of code".

robmoss commented 1 month ago
  • Practising how to structure and write code that is easier for others to understand;
  • Learning how to write tests to ensure that they don't change the code's behaviour as they restructure it;
  • Using continuous integration to run tests and/or generate results; and
  • Learning how to use a debugger to help figure out why the code is incorrect.

This would be something to discuss in our next meeting, to gauge people's appetites for specific skills, tools, etc, that they would want to practice.

I like the idea of this a lot! @robmoss When it comes to writing tests, should we recommend a framework? CI is a great opportunity here, we could even take what is written and leave it up as a template for other in the CoP to read during onboarding.

I'd recommend pytest for Python and I think that testthat is the most widely used framework for R? No idea for other languages.

In regards to writing code that is easier to understand, we could consider resources like this https://www.youtube.com/watch?v=Bf7vDBBOBUA&t=49s (just a personal favourite)

I've never seen it before, but it looks really nice! A great example of effective use of video. I usually (strongly) prefer written articles to video, but it works really well in this case.

robmoss commented 1 month ago

CI is a great opportunity here, we could even take what is written and leave it up as a template for other in the CoP to read during onboarding.

Great idea.

jomonman537 commented 1 month ago

The email looks pretty good as I don't have anything else that needs to be added. There's also been a lot of good discussion on what else we could do with the CoP.

Perhaps the most promising idea was to provide everyone with a small-scale project that is poorly structured, poorly written, poorly commented (and maybe even wrong in some places?) and ask people to tidy it up and extend it (slightly) to achieve some specific outcome (e.g., apply the analysis/model code to a new data set that is structured a little differently).

It would need some care to avoid frustrating participants. But it would also give people scope to explore a variety of skills according to their interests...

That seems like a great idea. I think it would be good to get different perspectives of how they could clean up the code so that it is easier to understand. Even for someone who doesn't code often (like myself) should be able to contribute some ideas to this exercise.

Did you want me to send an email to everyone next week reminding them of the next CoP meeting? Or will you be doing it Rob?

robmoss commented 1 month ago

@jomonman537

Even for someone who doesn't code often (like myself) should be able to contribute some ideas to this exercise.

And you can provide feedback on the clarity of people's efforts!

Did you want me to send an email to everyone next week reminding them of the next CoP meeting? Or will you be doing it Rob?

I don't mind, but I want to hold off until we have a confirmed speaker, so that we can announce the presentation in the email! I'm hoping to have someone confirmed in the next ~48 hours.