Hi @guillemcordoba, thank you so much for your efforts so far in making the holochain gym happen. If you’re after some feedback, I can give you my impressions on exercises 1 and 2 (entries, hashes) as well as my background knowledge to provide better context for my suggestions as a newcomer.
I’m a Python dev with a bioinformatics background. I’m familiar enough with Rust to google what I need to google EDIT: but would still consider myself a beginner. It’s a cool language! My flow of understanding of what holochain is and how to use it went something like this:
Discover holochain → Read through the (stunningly good) core concepts page → Install holochain via nix-shell on a Ubuntu Linux subsystem for windows → Ready to code → No hello World tutorial for RSM → Google for tutorials but they’re all for pre-RSM → Find ‘migration’ page but it’s not clear how this helps me / some hc commands don’t work yet or haven’t been implemented → Go to dev forum → Find gym and holochain-dna tutorial
So for me, the Gym is my first exposure to actually seeing the core concepts being implemented in code-space. Pre-gym, I’d never seen a folder layout for a typical project, or where the DNA lives in wasm form, or how zomes are laid out, or what the default.nix is.
My first recommendation would be to, prior to ‘0.entries’, walk through a typical DNA layout a bit like holochain-dna tutorial and show where this type of package resides in relation to the Cell and Orchestrater. Tryorama can come later, and the higher order stuff can be suspended for now while the basics are laid down, but I think it’s important to show learners where their current exercise sits in the hierarchy of future knowledge they will learn and where in the Core Concepts their lesson sits.
Second recommendation - introduce the pertinent elements of hdk::prelude at the top of each exercise + show useful rust hdk code (or link to it). I think this will help the user understand where these commands come from and encourage them to dive into the crate documentation (which I had to do for Hashes). You probably don’t have to type it all out, but even just a link to the docs and a suggestion to go from there wouldn’t be amiss.
Third recommendation - I was working through the newly updated Hashes exercise last night and got a little stumped with 2 things (spoilers for solutions):
-
use holo_hash::EntryHashB64
I’m not sure where this came from, and not sure what I could have done to find it. I’ve never seen any mention of the holo_hash package before this, and thought I was limited to using the hdk exclusively. I think this feeds back into my first recommendation - tutorials are currently so scarce, coding with holochain is partly an exercise in figuring out what I need to do to then learn how to do it.
-
Anything WebAssembly related needs explanation to me, eg this line on the get result (ExternResult<Option>)
→
.ok_or(WasmError::Guest(String::from(“Could not find book”)))?
This WasmError pattern is foreign to me (you should have seen the double matching code I originally had for handling the nested Option, it was gloriously terrible )
Where does the WasmError come from, why is it necessary, what code needs to be handled in WASM, etc.
That’s where I’m at so far. I think a general improvement I can recommend is this: within a chapter page, after the graph/interactive examples (which are so good), introduce a code pattern with a simple, complete example, and then end the chapter with a more complicated test. While I’m having a lot of fun learning on my own and figuring stuff out, it’s taking a while, and I think ultimately I’m scrambling for patterns and reading docs and only half understanding the core concepts because I have no baseline to check my knowledge against with simple examples. I’d really benefit from a pattern introduction → visual example–> complete example → test.
And with all of those suggestions aside, let me also say this: thank you . This has been amazing fun so far, and your gym is hands down the best dev introduction currently out there. I would love to continue to learn more, and to that end, I offer myself as a beta tester and second pair of eyes for your upcoming chapters, if you’ll have me. Maybe it would be useful for someone like me to come in and ask seemingly dumb questions to help refine and target the message of the chapters so that the gym can be a stronger place for newcomer and holochain enthusiasts alike.
Let me know - send me a message or reply here. Otherwise, just happy to provide feedback as I go.