# Breakout room 4 - Programming and code support
[Markdown CheatSheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)
[](https://hackmd.io/N9ISkOp3QraJ_sVEiZdU4Q)
## 1. Introduction
#### We'll cover the following topics:
1) Introduction of the breakout room topic (**<--** You are here)
2) Some personal examples from me (Brandon), while also soliciting examples from you!
3) Discussion and summary of challenges
4) Return of participants and organizers to the main workshop room
#### This particular breakout room
* In this breakout room, we'll discuss how Github can be best used for the programming and coding side of EcoEvo
* "traditional" GitHub is very modular software based, how can we do that for the very script-based EcoEvo research?
* avoiding Script Hell
* I expect that this particular breakout room will be mainly discussion based, but as we discuss we can share screens and provide personal examples as we see fit
#### During this breakout room, let's consider the following questions:
1) What other tools have you used for this purpose?
2) How does GitHub compare to other tools you've used for this purpose?
3) What are the main challenges in using GitHub for this purpose?
4) What are the main benefits of using GitHub over some other tool?
5) What could be done to improve GitHub for this purpose?
We will come back to these questions after our discussion here and fill in some answers to them!
## 2. Some Personal Examples, Some Talking Points, and Some of Your Examples
### Before We Begin...
I'm curious what your current knowledge/use of Git and Github is!
#### Talking Points to Consider
* For our discussion, I have some personal examples that I can share about how I use GitHub and Git to support my programming and coding within an EcoEvo field
* we can cover as many or as little of these as we want though! I am happy, and more than willing, to skip over some in favour of some of your examples!
* I also have some talking points that we can generally discuss/expand on that we as the organizers thought might be useful (certainly not an exhaustive list):
* Markdown
* RMarkdown
* Sweave (I'ver never used this!)
* Jupyter notebooks (I've *rarely* used this)
* R vignettes
* Your idea here!
### Personal Example: Using Branches as "Experiments"
* Recall (or learn!) what "branching" is:

(from https://gitbookdown.dallasdatascience.com/branching-git-branch.html)
* In EvoEco, especially with modelling, perhaps this "new feature" is some model reparameterization that we don't want to commit to (yet)
* Create modular branches for each "experiment" that you may want to try
* An example from my work: https://github.com/na-pops/analysis
* there is the "main/master" branch that is the main analysis that I am happy with
* there is a "99-percentile-removed" branch where I experimented with seeing how the results would change if I removed the 99th percentile of data
* there is a "bcr" branch where I experimented with a new set of spatial covariates
* there is an ongoing "stan" branch where I am experimenting with transitioning this analysis to a Stan framework
* If you end up being very happy with one of the experiments, and you feel like that should be the way to do your analysis from now on, you can consider "merging" that experiment back into your main code base. Now your experiment is your main code base!
* If your experiment failed, or you wanted to try something else, you can keep the branches just for future references, or just delete them (if they were a particularly bad idea)
### Personal Example: GitHub Organizations for Modularity

See https://github.com/na-pops
* experimental (in my opinion) use of GitHub Organizations
* each module of the project has its own repository
* on a local machine, if you keep all the repository subdirectories in the same directory (e.g., in my case I have all of these repos in a "na-pops" directory), you can get them to "talk" to each other with relative file paths
* separate data cleaning from data modelling from post-hoc analysis
* "super" branches
* a working concept that is going....medium well
### Some Other Brief Examples I Think Are Neat
http://putnamlab.com/resources
https://github.com/PoisotLab
### Any of the Talking Points?
To remind you, some that were discussed in the organization of this:
* Markdown
* RMarkdown
* Sweave (I'ver never used this!)
* Jupyter notebooks (I've *rarely* used this)
* R vignettes
* Your idea here!
### Any of Your Examples?
* Your neat examples here!
## 3. Discussion and Summary of Benefits and Challenges
[](https://hackmd.io/N9ISkOp3QraJ_sVEiZdU4Q)
Let's revisit those questions from the beginning, but let's look into answering them!
* At this point, if you haven't yet, please feel free to jump on the hackmd document if you would like to type out points yourself (click the badge above)!
* Otherwise, I will do my best to type as we discuss!
### 1) What other tools have you used for this purpose?
### 2) How does GitHub compare to other tools you've used for this purpose?
### 3) What are the main challenges in using GitHub for this purpose?
### 4) What are the main benefits of using GitHub over some other tool?
### 5) What could be done to improve GitHub for this purpose?
## Return of Participants and Organizers to the Main Workshop Room
But before you go, I wanted to say thanks for coming to this breakout room! If you'd like to keep in contact, here are ways to reach me:
Email: brandonedwards3@cmail.carleton.ca
Github: github.com/BrandonEdwards
Web: brandonedwards.ca