Reflections and learnings from the first SymCode session
There were four of us that showed up for the first symcode session that was planned for October 9th 2019. @guillemcordoba, @hedayat , @raphisee and myself. Thanks to all of you for doing that, It was fun! 
And I got to learn a bunch of stuff.
Learning about the process
Even though this was the third time this app would be implemented, it was still pretty har do to scoping for what could be done in the timewindow that we had set up (4h).
It took us about an hour and a half before we split into seperate tracks. We ended up scaffolding (defining structures of entries and functions) and re-writing the application from scratch again.
Having people broadcast their coding (and recording at the same time) is really interesting. It was great to be able to drop in on another person coding once I got stuck in what I had set out to do.
Also, the ability to just start speaking in the zoom chat and pull the others in to resolve some question was also really satisfying.
Some of the materials harvested
There was a bunch of materials recorded, which has been cut and uploaded to youtube. Following I will embed the videos with descriptions of what you can find in them and when. (all videos are also in this playlist)
If you want to look at the HackMD document we used for scaffoling it is here:
A short background on the application can be found in the Readme on the repo here:
part 1 - the setup video
The video is footage of us going through structuring the rebuilding of the application from scratch.
Guillem is walking us through the structs for the entries, considerations on choosing multiple or single zomes as well as what functions will be needed for a minimal “functional” application.
Towards the end of the video Guillem also intializes the repo using command line interface tools.
Time:
2:45 What structs do we need for the entries?
8:30 Do we make one or two zomes?
15:00 What functions do we need?
19:00 Updating the structs, do we need another type of entry?
26:43 Iniation of the Holochain Project (HC Init)
31:50 Generating zomes using the rust-prog macros (HC Generate … rust-proc)
part 2 - regrouping for questions
In this part we regroup to go through some questions and clarifications.
(applologies for the DC power noise from time to time I think it is my laptop that is conducting)
Contents:
Q: How do I retreive all the books to find which ones are mine?
Q: Should there be links from requests_to_borrow to the owner of the item? How does that work since they are two different zomes?
8:00 Creating the get_owner function in the books zome
13:00 Q: How can we use the AGENT_ADRESS when linking in the functions?
15:00 Linking from AGENT_ADRESS to an entry
17:00 Q: Why do we need links when the books have their owner in the entry?
20:00 Q: What is the difference between link-entries and normal entries around how they are stored on the DHT? How does that help us with speeding up querying?
part 3 - Connecting a UI
A short walkthrough of the UI that guillem started to create, how it talks to the backend and how to connect it to the conductor. The UI is built with: https://lit-element.polymer-project.org/
part 4 - Code walkthrough and review
At this point we started going through the code that was produced to fix errors and
0:30 - Going through imports in the HC books/lib.rs
1:40 - Start cleaning up the HC functions from errors
6:17 - Making variables in the zome public
6:50 - Fixing the validation error parsing problems.
7:50 starting to compile code with HC package
8:20 - removing the .cargo from GIT with .gitignore
10:00 - walking through the work on tests and creating more proper syntax
11:00 - Understanding that we should not be passing the owner adress in the create_book function, by switching from the book struct to parameters
12:20 - parse the result from the functions before checking the equals to make it more reliable
Viktor attempting to write tests
(Warning: I am an inexperienced coder, this is a very slowly progressing video
)
My first published livestream of writing tests:
coding happens between around 2.40 to 30:00 marks.
Guillem coding the front end
Viktor and Guillem - updating testing