Holochain Forum

Coding together online on October 9th!

I’ve been trying to get organized with hosting a community coding session to attempt to replicate some of the hackathon learning environment online and available for more people.

Now I am happy to invite those that are interested in this experimental session to join the first iteration of something I’ve been toying with calling SymCode on 2pm October 9th

First a description of the event:

SymCode - Learning Lounges

SymCode is a type of Event where we code together and learn from each other. It is a protocol in development, always.

Overview

Each event has a project focus. An event can last up to four hours. A project is chosen to work on as a group during these hours and hopefully there will be a larger code repository and a bunch of harvested learning at the end of the event.

Things that are encouraged to bring to the event (that is to say to your computer):

  • Headset - (Typing and Speech often interfare!)
  • A local copy of the code repository listed in the invitation to the event and having run the nix-shell command in the repo to have the local dev environment set up
  • Setting up a stream account somewhere (like Twitch/Youtube) to be used in the session
  • Snacks / Tea / Coffee :smile:

There is no limit to the number of participants, but methods for dealing with large and small groups.

An accompanying open document (like this one) is kept alongside the event to harvest learning and keep people up to date with what is happening during the event.

Event structure

40 min: Introduction

  1. 10 minute check-in, if groups are larger than 5, try to use break-out rooms where possible.
  2. 10 minute quick intro to the project being worked on. “Why?” “How?” type stuff.
  3. 20 minutes of "What needs to be created next and who is working on what?

In this section, people who are going to code, list what it is that they are going to be working on and, if they choose, also post a link to a feed where others can follow them in their coding (using something like twitch for instance).

80 minutes: - Coding & Learning

A whole block of coding, where everyone that is interested in actively writing code is doing so and sharing their experience if comfortable with that.

Coders would be encouraged to narrate their coding experience.

Hopefully there would be different people that work on different parts of the application. This could include things like:

  • Tests
  • Front end design
  • Data integrity - “back-end”
  • Front end logic and filtering

These would naturally need to correspond to the needs of the application being woven. Everyone that is sharing a feed would be encouraged to keep a pen and paper in order to quickly note timestamps in their feeds where they either hit a wall with their code or came through a learning experience.

These stamps can be added to the video URLs in the collaborative document after the coding session so that many others can be walked through that piece of learning in the way that it happened.

30-60 minutes: Walk-through of Code & Questions encountered

Each collaborator, if willing, shares the code that they have written. Where they came to a stop and/or learning that happened during coding.

45 minutes: Assembly

  • Organizing the coming together of the different part that has been developed during the coding session (UI/Testing/Data layer…)
  • Getting code merged into updated repository and getting everyting running together
  • If there is time: polish, extend and evolve application…

15 Minutes: Check-out

Take five minutes to evaluate what you have learned and hopefully note learning in the collaborative document for each person.

Check-out sharing of learning, in full group or in break-outs for 10 minutes.

Included in each event invitation is a cloned repo with a Nix-Shell config to be used in development and a prepared Collaborative Document link.

11 Likes

Second the invitation for this specific event. (I will update this post when details are fixed)

Details

Time: 2pm CET - October 9th
Zoom room: https://zoom.us/j/595304937
Repository: https://github.com/zaunders/MailBoox-SymCode
Collaborative Document: https://hackmd.io/@zaunders/BJBt0R1dS/edit

How to join

If you want help co-create this event that will be hosted and facilitated by me, please enter yourself as a participant in the bottom of the collaborative document. If you have any trouble with this, just reply to this thread.

If you know you want to be coding (like you might @guillemcordoba? :slight_smile:) please have a look at setting up a live stream for that. Details are in the document above.

Hope to see you soon! And please ask questions here for clarifications, I am sure there are lots of unclear things :slight_smile:

(hey @Connoropolous got time to polish this old beaut up with some other folks here? :slight_smile:)

5 Likes

I am sure we are going to enjoy this online codding.

are we going to use the latest version of Holochain?

1 Like

Yes, looking forward to it!

Currently the nix config file points to holonix 0.0.30 which pulls in the 0.0.28-alpha1 (I just used the config we were using at the Prague Hackathon).

Maybe @thedavidmeister would be able to advice on what is a good stable holonix version to work from?

@ViktorZaunders i intentionally stepped back from managing the weekly conductor releases

i’m focussing on things other than trying to decide what is in/out of the conductor release each week (feature management, QA, etc.), which is a PITA if for nothing more than the Melbourne timezone being really inconvenient to do this kind of planning from :sweat_smile:

the holonix config file will always point to the latest version of itself, if you have a known-good version that works for you for both holochain and hc then go ahead and use that

that said if you are someone who prefers nix-env over nix-shell i recommend trying out v0.0.31 as it removes the need for nix-shell completely if all you need is holochain and hc (i.e. you don’t need anything more than the standard holochain and/or hc commands) - V0.0.31 of holonix shipped - it does this by “wrapping” hc in its own version of rust/node/etc.

pragmatically though… definitely do a dry run of any specific code examples before the day, it’s so easy for a simple typo or missing step to derail people who are new to the process

1 Like

thanks David! We will try decide and try it out.

Maybe @guillemcordoba has input on this?

Hi there!

I think having the nix configuration files (config.nix and default.nix) as you have already on the repo is probably enough, as collaborators can clone and just nix-shell into it. That’s what always has worked best for me. I’ve tried the last version of hc v0.0.30-alpha6 and that worked perfectly.

I’d be happy to set up a stream, never done it but shouldn’t be that difficult.

1 Like

ok, great! Really looking forward to experimenting together :slight_smile:

1 Like

Hi! I’m interested in collaborative coding sessions; however as I am in Sydney the times don’t work well for me and my circumstances.

1 Like

Hey! Yeah, I get that, EU and Australia sure is a pain to coordinate :slight_smile:

I’ll try to document this so maybe next time you or one of the other people down there can hold the space! If I host another one later, maybe we can shift times for that too.

1 Like

Hey again,

Looking forward to experimenting with those of you who make it to tomorrows session. :microscope:

Here is a link to the zoom room where we meet at 2pm Central European Time (I’ve also updated to post above to include the link). ping @hedayat, @guillemcordoba, @raphisee

2 Likes

Hi @ViktorZaunders, when is the next session?
I would love to join you .

1 Like

hey @lylycarrillo, nice to see you here :slight_smile:

We actually were planning to have a follow up session on saturday but I need to reschedule that (did y’all see my mattermost message @hedayat, @guillemcordoba, @raphisee?)

I am still processing some video here too but will post some harvest from the last session with reflections on that when I am ready!

Will keep you posted for what happens next @lylycarrillo :slight_smile:

1 Like

@ViktorZaunders I can attend our codding session during the week days after 4:00 pm CET time. I can not leave my company sooner because of our working hours rule.

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! :smile:

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:
https://hackmd.io/201EhbqHQkaAR58Dxdc4qQ?both
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 :smile:)

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

6 Likes

We’re moving towards morphing this into the Open Learning Community:

guessing this might be interesting to some more folks @carolyn-beer, @bear, @dhtnetwork

4 Likes

Excited to hear about the direction. Thank you for the detailed reflections write-up!

Great! Victor, thank you for summing up this information, valuable!
:heart_eyes:

1 Like

Maybe holopass could be another learning project if we get this thing flowing!

2 Likes

We should introduce the online coding group at the Happathon in Barcelona… might be a great group to continue on the momentum of the Happathon. Also to have a fixed date maybe in the week following the happathon.

What do you guys think?

1 Like