Outlining the new Cardano Go PBL Course
After a week away, Cardano Go Live Coding was back in action this week. We took a moment to step back and to plan ahead. In case you missed it, here is the recording on YouTube. This blog post will take more of a "meeting minutes" approach, because we covered an array of agenda items, many of which deserve some deeper dives in future live sessions and blog posts.
A Growing List of Helpful Code Examples
We started by taking stock of some of the resources discussed during the initial, open-ended Cardano Go Live Coding sessions. It's a good list, and we now have code examples prepared for most of them.
Here is a list of code examples prepared so far by the Blink Labs & Andamio teams, along with some next steps:
- Transactions with Apollo
- Snek is now Adder
- existing snek-webhook-starter-kit handles the webhook receiver side
- todo: let's build another that uses Adder as a library and outputs the the screen
- Bursa
- gOuroboros starter kit from Blink Labs
- 5Binaries Go Cardano Serialization Library
- which is used in Bursa
- low level address lib
- low level cryptography
- todo: show example
Course Outline
These examples provide the perfect place to start building a Cardano Go PBL Course. That's it was natural to use most of this week's meeting to write an outline for the course.
Here are some loose notes from the meeting:
Course Goal: Truly Welcoming Contribution
How can we best welcome anyone to contribute to a project? It's more than just saying "Hey! You can contribute!" Our goal is to find successful ways to welcome people so that they feel supported to contribute, and confident that they can participate.
Question: What can we all add to a project so that newcomers feel welcome...?
Hypothesis: Education leads to participants "knowing what's there and why" -> being able to recognize: "What isn't there?" -> and being ready to ask, "How can I help?"
Course Outline
000 - Prerequisites
- Other courses / modules
- What background knowledge does someone need so that they won't get stuck?
- Cardano background knowledge
- Go background knowledge (setting up Go environment should be Module 100; include editor extensions)
100: Hello World, Getting Started + Getting Things to Work
- "101": Start with the Cardano Node. Use gOuroboros to interact with it.
- Demeter provide easy access to a Node, and Go Starter Kits are already list there
- Link out to running it locally
- gOuroboros starter kit
- "102": Build some simple transactions (see resource list above)
- Apollo
- Bursa
- "103": Reacting to Chain Events
- Learn basics of Adder Library
- Sometimes you "do a thing" in relation to events: see Workshop txbuild example
- Sometimes you want to index (a subset of) events as they come through (that's called an indexer...) -- if you want to build a custom indexer, you can start from Adder
200: Cardano is more than a wallet. It has smart contracts. Let's talk about building apps...
- "200-Level Modules": Moving into abstraction, trade-offs, building apps
- 201 - Queries: Often we don't need a custom indexer. We can use one provided by someone else. (Maestro, Blockfrost, Dandelion, even - in a different way - UTxO RPC)
- 202 - Applications and Smart Contracts: To build an actual application, you'll have to interact with smart contracts
- Cover spending + minting validators
- Minting and Burning tokens
- Do I want to use this tool or that one? What makes sense? Everything preceding this Module helps people understand the decisions they'll need to make.
- Introducing Datums and Redeemers (writing by hand..."introducing a need to know")
- Key idea: a production application will combine these tools in all sorts of innovate ways
- 203 - Serializing Data of all kinds...
- Deeper dive into custom Datums and Redeemers - here's a tool called Plutus Encoder that is included in Apollo. After 202, don't you want to know more about this?
- Parameterized scripts
- Advanced transactions
- debugging
- getting hands on with CBOR
- reading CDDL
- "300 = Contribution" -> Arriving at:
- "How can I help?"
- What are we going to build?
- How can I build my thing?
Starting from these notes, we can build the Cardano Go PBL Course. The course outline is live in Andamio, and it will be continously updated over the next few weeks.
Advice Process: Cardano Go PBL
While we outlined the course, people shared advice on how to use the examples, and we discussed some next steps.
- Using Starter Kits (aka "Hello Worlds for the individual functionality...")
- "snek webhook starter kit is a receiver"
- gOuroboros starter kit
- New adder starter kit
- using command line for UI
- preferably show some interactions with validators
- Edoardo built a tool into Apollo (Plutus Encoder) for generating Plutus data from Blueprints
- We need to provide a simplest case -> another starter kit
- Could an improved Readme
- Using Buidler Fest 2024 Workshop code: https://github.com/blinklabs-io/buidler-fest-2024-workshop
- Look at each section of this code. Each section introduces one library -> ease of use and dev onboarding
- Using UTxO RPC - when to introduce this?
- What is the order that we should introduce all of these?
- "Seeing something end to end makes it click"
Also Covered
We also touched a few other ideas + updates, and will follow up each over the next few weeks.
Zero Withdraw Trick
- Can be included in a "Tips and Tricks" segment of the course. ("Why should I switch from this TS library to Go?")
- How can we implement Zero Withdraw?
- What can I go to ask support implementing it?
- Schedule an upcoming Live Coding Example: How we're using Zero Withdraw in Andamio
Adder Updates
- thank you Aurora!
- Objects returned by Adder are now consistent with types in gOuroboros. Blocks and transactions are passed as Go structs so that no conversions are needed
- Why it matters: easier to move between Adder response and UTxO RPC, for example
Andamio CLI Roadmap
- Reference Scripts: WIP, improvements to Apollo in progress`
- Datum and Redeemer
- Metadata
About this Session
App developers and the libraries they use are growing up side by side. It's both thrilling and daunting to be a Cardano developer right now, and we find that getting together is helpful along the journey! That's why we meet on Mondays at 1300 for Cardano Go Live Coding.
Everyone is welcome. For links to Live Coding sessions visit: https://www.andamio.io/calendar