owned this note
owned this note
Published
Linked with GitHub
# Day one Q&A
<!--- Reminder do not edit anothers post, please use a fresh paragraph when typing hack md is a simultations editing tool-->
## Icebreaker questions
- Q: What was your first program you wrote?
- A:'hello world' when I was 16
- A:I wrote a text based object oriented game in Basic
- A: Drawing a circle in FirST BASIC
- A: a picture in Basic
- A: Sybyl programming language script
- A: a HelloWorld in Pascal
- A: A read number and print sum in fortran.
- A: a program to calculate areas of geometric forms (can't remember the language, I was 13)
- A: 'hello world' When I was 32 in Perl programing course
- A: some basic Perl string manipulation for sRNAseq analysis
- A: Hello world in C
- A: Drawing animating circles with QBasic
- A: Some baah scripts for work
- A: Hello world in Pascal
- A: Bash script for biochemical computation
### What experience have you had?
- Q: What experience have you had?
- A: analysis and processing data, also workflows
- A: :
- A: analysis and programming for NGS data, partialy pipeline.
- A: My experience is mainly with analysing NGS data
- A: mainly analysis and process of data
- A: image process with Python C++, with many packages, also want to try Julia
- A: Image analysis and processing NGS data in python and R
- A: Analysis of NGS data, pipeline development, tools and workflows for processing NGS data
- A: I work generating pipelines for processing and analysing x-ray diffraction data.
- A: My experience is mainly about data processing/refining and analysis. Processing work started with Perl and moved on later to Python, whereas analysis would have been mainly in R. I hope to go into pipeline development in the future.
- A: Atomistic modelling, used several toolboxes in python for setup, interpretation and further analysis
- A: MCMC and modelling in FORTRAN
- A: Mostly running tools and workflows on NGS data.
- Q:Where do you work?
- A: LTU Sweden,
- A: NBIS, Uppsala
- A: NBIS, Stockholm
- A: University of Gothenburg: Chemistry and Mol. Bio.
- A: Uppsala University, Department of
- A: NBIS, BMC, Uppsala
- A: BMC, Uppsala
- A: Uppsala University, department of Chemistry
- A: NGI Stockholm / KTH
- A: NGI Stockholm / KTH
- A: IGP, Uppsala
- A: LTH, Sweden
- A: Stockholm University, Department of Mathematics
- A: NGI Stockholm / SU
- A: NGI Stockholm / KI
- A: IGP, UU
Coffe break until 10:14
---------------------------------------------------
# Day one General Discussion
Discussions in general will go here I remind you that these documents will be uploaded to the repository branch that will be created and that the NBIS training code of conduct should be followed. Be respectfull to eachother so you do not edit others posts. Hack md alows for simultaions editing. /Lars Eklund
## Daily questions
- Q: Can we say with interpreter is slightly less efficient in general?
- A:In general an interpeter is less efficent, depending on what is done, this will be coverd more in the later sesion of the course
-
- Q: Will we look at graphical interface as well?
- A: What do you mean by graphical interface?
- A: if we will learn something on how to construct a gui for other users to use (or ourself)
- A: We will not have time to delve to deep into a topic of UX design other tha very broad strokes, for each programming language there are so many diffrent ways to generate graphical interfaces, if there is a wish we can give a short list of diffrent tools you can look into after the course.
- A: Thank you! I am interesting in building an interface to a Python code
- A: Here is an example of why we don't cover details in this course https://www.activestate.com/blog/top-10-python-gui-frameworks-compared/
and a list of c++ frameworks not including the Microsoft frameworks include in the visualstudio development environment.
https://terminalroot.com/the-7-best-cpp-frameworks-for-creating-graphical-interfaces/
also take best with a very big grain of salt.
And that is just the tip of the iceberg. We will cover the MVC frame work during the Design Patterns which most modern interfaces are based on.
- A: Thank you! This already helps
- Q: There are so many languages, choosing one is based on what we will need to do, Does NBIS has smart way to show us to choose?
- A: Yes :-) there is the NBIS development guideline, chosing language is always hard to do some times the requirments of the project will set which languge to use. Other times it is set by which language you are most comfortable with or which your team or intended audice is most comfortable with.
- Thank you! I found that is an actual matter, specially when I have to colaborate with others, then for me it is also time to learn new languages.
- Q: Can we fix the formatting on this page? It is bugging me that all the questions and answers have a different format.
- A: Fixed, as much as a dynamic doc Each day will be prittified once it has been commited to the git repository
- Q How do you program? Put “o” on you choice
- Top-down: ooooo
- both: ooooooo
- Bottom-up: ooooooo
- neither: o
- Summary: 5 Top-down, 7 Bottom-up, 7 Both, 1 neither
### Have you distributed your software? How?
- Q: Have you distributed your software?
How?
- A: yes, via GitHub
- A: Yes, GitHub
- A: Yes, GitHub
- A: No
- A: I am trying to do so now, through automatic ci/cd using github actions. Hoping to add it to PyPI and conda-forge.
- A: Yes on GitHub.
- A: No, but I will have to do it soon using github
- A: Yes, GitHub
- A: No
- A: Yes, GitHub
- A: No
- A: Yes, Github and some years ago on CD + a USB hardware-key
- A: Yes, Github; and other SDK, xcode
- A: No.
- A: Via GitHub
- Q: Which of these documentations is about input/output descriptions?
- A: Input and output descriptions have several places depending on your modeling aproach this can be in design document and/or in the User Manual or Reference material. In general when you use the git a good place to define your input and output is the Readme.md file that should be in all repositories.
**Note:** UML diagrams can be used to descibe all UML diagrams, the top of introduction diagrams made with Graphviz program, can be viewd as a USECASE diagram with interacting usecases.
-------------------
## GROUP DISCUSSIONS UML and Diagrams
### ROOM 1
- Generally, our group never used UML for programming but for other stuff like PowerPoint, etc
- It seems UML very useful for documentations, etc.
- Pseudocode is useful to convey to teammates how you think programming flow should look like.
### ROOM 2
- pseudocode can be re-used in case one needs to re-write the code in a different language later on
- UML seems very useful, though hasn't been used in the group much (so far)
- UML is useful for collaborative projects to give overviews of the programs / scripts
- UML for documentation, detail of the graph may need to be adjusted for each purpose
### ROOM 3
- No experience with PlantUML so far
- Seems more useful for bigger teams and/or presenting the project
- For smaller teams / projects, sketching / whiteboard are probably more convenient
- Pseudocode is often useful
-
### ROOM 4
- No experience with UML and doesn't seem too applicable to our needs, more useful for larger projects
- Pseudocode seems very useful
### ROOM 5
UML:
- Gives a good overview
- Allows a better understanding of the workflow
- To overcome difficulties in bigger projects, focus on smaller part of the project.
Pseudocode:
- Useful especially to explain and visualize a certain function or process. Used to document the workflow.
----
## Version control
https://uppmax.github.io/programming_formalism_intro/sourcecontrol.html
Anyone needing setup help for git??
- Q: If I have VS code in another directory, do I need to move it to current dir to be able to git core-editor VS code , for example ?
- A: No it works where ever, using the terminal in vs-code will give you a terminal with a local working directory, use normal interactions
- Q: Have you considered adding angular style commit messages to the course? More info can be found here; https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines. The main idea is that you add a prefix that expresses what kind of commit you're making. It can then be picked up and used to keep a log of changes and automatically change the version number by either patching or building a new minor or major release. Seems like good practise :)
- A: Thanks for the tip I do not belive we are covering this
- Q:Whenever I'm working on a project and using GitHub for version control I make commits whenever I consider my code to be functional and "decent". However, when it comes the time to commit, I often find that I’ve made so many changes that I don't know how to describe them meaningfully in the commit message (either because they are too many or because I have completly lost track of them). Any advice on best practices?
- A: Yes in general this means that you have not commited often enogh, the general idea is to do "atomic" commits which means each commit should only contain one change, but it is very common that commits become muddled becasue you feel silly commit one or two lines of code, it may also feel that it takes time. If you use integrated git environment these commits can be easier to do.
- Q: Trying to use git and connect to github, I get an error 'fatal: remote origin already exists.', what to do?
- A: please submit your commands to the question so we can evaluate. please remove your names from the commands
- A: XXX:~/programming-course/formalisms/diagrams$ git remote add origin git@github.com:XXX/Formalisms2.git
fatal: remote origin already exists.fatal: remote origin already exists.
- A: https://komodor.com/learn/how-to-fix-fatal-remote-origin-already-exists-error/
https://docs.github.com/en/get-started/getting-started-with-git/managing-remote-repositories
hope it helps
- Q:My terminal throw back some errors, said permission denied(public key). Did I get it wrong?
- A: https://docs.github.com/en/authentication/troubleshooting-ssh/error-permission-denied-publickey
this link may help you find the error you can also try the https version instead of ssh.
## Computer programs are expected to produce the same output for the same inputs.
- Q: Is that true for research software?
- Q: Can you give some examples? What can we do about it?
- A: Different software versions may produce different outcomes
- A: Generally True, but depends on the programme and the settings for the input may produce different output.
- A: The simulation software I use requires that random values are added initially. So the distribution of output should be the same with the same input, but not every output will be identical.
- A: Random sampling may cause slightly different results
- A: This problem have several mitigation, one easy way is to use pseudo randomization in a way that is reproducable, using a function(not time dependent) that generates the same seed and iterataion will generate the same "random" sequence.
- A: Not necessarily, not all programs work in a deterministic fashion. However, there are ways to make results reproducible by setting a seed (initializing a pseudo-random number generator), for example. But in some cases this is not enough to make reproducible results as there may be different sources of randomness, tools based on deep learning techniques are a prime example.
- A:It can be diffeernt; Example, generating random numbers in R and thus specific "seed" values are used to create similar results.
- A: They should, be different version may give (small) differences, which could also be a result of an updated dependency. Also, random number generators can change the output. A famous example is Oxford's COVID cases projection software.
- A: If you use the same random seed, yes
- A:Differences in the OS and their associated software versions (i.e. Mac OS vs Windows)
- A:Some software after updates, the dependencies changed, then it may not be the case to reproduce the same results.
<br>
<br>
<br>
- Q: How do you differ between release and build in the Calender version? Is it like minor/patch in the Semantic?
- A: The release or build modifiers are arbetrary modifiers that are to give help to understand the difference between for example a nigthly build a fully tested release version
----------
## copy right and licensing
- Q: At what point does code become copyrighted? For example, it can't be that a generic solution to an equally generic problem from stack overflow is copyrighted, right?
- A: Well it gets copyrighted at inception of the IP, but Anything that you post to Stack Overflow will be under the terms of the Creative Commons license. Because those are the terms of user aggrement for posting to Stack overflow.
### Why should we document code?
- Q: Is project documentation important? Why?
- Q: How would you describe a useful documentation?
- A:For surely. Tracebility is key to develop software, if the team change developers, then other team member should be able to have readme.txt to be able to follow up entire development process.
- A: As a reference & guideline for the future changes,developments and instructions.
- A: useful documentation should state (1) how to run the code (2) what is done to the data (3) with what kind of software, producing (4) what kind of output. If your are nice, you might give also some information on how to interpret the results.
- A:It is usefull when it describes what the code does ans give some practical example more than only says how to open and save a file
- A:Very important for understanding and reproducibility/reusability
- A: Yes, one can add information for colaborators or remember what was done previously.
- Even if no one else uses the code, its important to remind yourself what and why you did something, and to run it again later.
- A: Playing around I found out that I need a line in the code with "```plantuml " and that it works if the fiel has the extension .md instead of .puml
- A:This is the markdown tag to show that you are in a codeblock for plantuml it should also end with ``` with the .puml you have a plantuml file which can be interped by the plantuml server or standalone to generate png files of your diagrams each diagram needs a @startuml and a @enduml
### What is your impression about documentation?
- A: annoying to write, important to have
- A:
- A:
- A:
- A:
---
## Courses
### Git: 5 half-days 14-18 Nov
- <https://www.hpc2n.umu.se/node/935>
### Scientific Computing with Python: 4 fill-days 22-25 Nov
- <https://scicomp.aalto.fi/training/scip/python-for-scicomp-2022/>
---
- Q: Room 2: we need help on the content of the diagrams
- A:
- Q: Can declarations be used in other diagrams, or only in Sequence diagrams?
- A: All diagrams that was to be chosen between. You'll see!
- Q:
- A:
- Q:
- A:
----------
## Questions above this line
-----------------------------------------------------------------
# Day one feedback
- f:Very good workflow; The group work is needed assigned little longer time to make collaboration works.
- f: It would be nice with practical (very short) examples because sometimes the concepts stay a bit on the air and it's difficult to understand how to put them in practise. For instance how a Software Development Lifecycle would look like for a "Hello word" program (maybe a slightly more complex program)
- f: The instructions for the group work would require some clarification. Is it possible to use the already created repo on GitHub for the exercises at the end? As it stands atm, one hopes that there is at least one person in the group that knows how to quickly do stuff. Also it would be good if all questions that are asked during the course are already posted in HackMD. Like that, one could save time and focus on the course itself. I think the online material was very nice!
- f: In the last exercise there should be a well define "problem" to solve with the diagram otherwise one spend more time thinking of what it should be written in there than trying out the code.
- f: It will be great to provide digital certificate from this training course as well, then students can bring it back to thier own school.
- A: I will look into how to do that. /Lars